【问题标题】:Update related list with change in list in CakePHP 3使用 CakePHP 3 中的列表更改更新相关列表
【发布时间】:2016-07-19 15:05:59
【问题描述】:

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

我有另一个表 productscategoriessubcategories 相关。

productsadd 方法中,我想从列表中选择类别,然后选择与所选特定类别关联的子类别。

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

【问题讨论】:

    标签: ajax cakephp model-associations cakephp-3.2


    【解决方案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;
    }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      相关资源
      最近更新 更多