cakePHP:表单与相关模型不自动更新

时间:2013-07-08 18:05:34

标签: forms cakephp

我努力让表单以我希望它的行为方式工作。 我有一个Regions和Properties模型,一个区域可以有很多属性等等......

我创建了一个表单来选择Region,然后选择该区域中的Property!

表单有两个列表,但我很难让第二个列表[Property]更新自动化,只有你从第一个列表中选择的区域中的属性[Regions]

当您在列表中选择其他区域时,它应该自动更新属性列表,因此您只能看到该区域的属性!很抱歉我的解释不好,但不知道如何更好地解释这一点。

这是我的控制器中的代码:

// Retrieve the region list
        $this->set('regions', $this->Region->find('list', array(
            'fields' => array('Region.id', 'Region.regionname'),
            'order' => 'regionname',
            )));
        // Retrieve Property list for the regions.
        $this->set('properties', $this->Region->Property->find('list', array(
            'conditions' => array('Property.live' => true ),
            'fields' => array('Property.id','Property.description'),
            'order' => 'id',
            )));

这是我表格的一部分。

<?php echo $this->Form->create('Upload', array('action' => 'add', 'type' => 'file')); ?>
<?php echo $this->Form->input('region_id', array('label' => 'Select Region:')); ?>
<?php echo $this->Form->input('property_id', array('label' => 'Select Property:')); ?>
<?php echo $this->Form->file('file'); ?>

我花了很多时间在这里和youtube上寻找,但找不到它: - (

1 个答案:

答案 0 :(得分:1)

没有自动化的方式去做你所要求的。由于下拉列表的所有数据都已在加载时显示,因此根据第一个选择更改第二个下拉列表的唯一方法是通过javascript。

如果您搜索“选择下拉菜单”或类似的蛋糕,您将找到使用ajax或plain js执行此操作的解决方案。我在这留下一个reference。那个是用ajax和一个新动作完成的。但你也可以只用js做,对Region和Properties进行查找,并在js中的json变量中设置它们进行操作。