0

我有两个表categoriessubcategories其中有categories很多subcategories关系。

我有另一个与andproducts相关的表。categoriessubcategories

在我想从列表中选择类别的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');

因为jsCakePHP 3. 我怎么能用 Ajax 做到这一点。

我也是 CakePHP 和 Ajax 的新手。目前这显示subcategories在列表中。

4

1 回答 1

1

我让它像这样工作并且工作正常。

查看文件包含

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

myAjax.js文件包含

$('#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里面的动作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;
}

希望这可能对某人有所帮助。

于 2017-01-29T17:02:28.693 回答