2016-07-19 4 views
0

私は2つのテーブルを持っていますcategoriessubcategoriesここではcategoriesがあります。subcategoriesがあります。CakePHP 3のリストの変更に関連するリストを更新する

categoriessubcategoriesに関連する別のテーブルproductsがあります。

add方法productsリストからカテゴリを選択してから、選択した特定のカテゴリに関連付けられたサブカテゴリを選択します。

echo $this->Form->input('category_id', ['options' => $categories, 'empty' => true]); 
echo $this->Form->input('subcategory_id', ['options' => $subcategories]); 
echo $this->Form->input('product_type_id', ['options' => $productTypes]); 
echo $this->Form->input('title'); 

CakePHP 3にはjsヘルパーがないので。 Ajaxを使ってどうすればいいですか?

私はCakePHPとAjaxも新しくなっています。そして現在、このリストにはsubcategoriesのすべてが表示されています。

答えて

1

このように動作し、正常に動作します。

ビューファイル

<?= $this->Form->input('categories', ['options' => $categories, 'empty' => 'Select', 'id' => 'categories']) ?> 
<?= $this->Form->input('subcategory_id', ['type' => 'select', 'id' => 'subcategories]) ?> 

myAjax.jsファイルがProductsController.php

public function ajaxSubcategories() 
{ 
    $this->autoRender = false; 
    $this->loadModel('Subcategories'); 
    $category_id = $this->request->data['category_id']; 

    $subcategories = $this->Subcategories->find() 
     ->where(['category_id' => $category_id, 'deleted' => false, 'status' => 0]); 

    $data = ''; 
    foreach($subcategories as $subcategory) { 
     $data .= '<option value="'.$subcategory->id.'">'.$subcategory->title.'</option>'; 
    } 
    echo $data; 
} 

内部

$('#categories').change(function() { 
    var dataSet = {category_id: $(this).val()}; 
    var requestUrl = appBaseUrl+'products/ajax-subcategories'; 
    $.ajax({ 
     type: "POST", 
     url: requestUrl, 
     data: dataSet, 
     success: function(result) { 
      $('#subcategories').html(result); 
     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      console.log(textStatus, errorThrown); 
     } 
    }); 
}); 

ajaxSubcategoriesアクションが含まれている含まれ、これが誰かを助けるかもしれない願っています。

関連する問題