我努力让表单以我希望它的行为方式工作。 我有一个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上寻找,但找不到它: - (
答案 0 :(得分:1)
没有自动化的方式去做你所要求的。由于下拉列表的所有数据都已在加载时显示,因此根据第一个选择更改第二个下拉列表的唯一方法是通过javascript。
如果您搜索“选择下拉菜单”或类似的蛋糕,您将找到使用ajax或plain js执行此操作的解决方案。我在这留下一个reference。那个是用ajax和一个新动作完成的。但你也可以只用js做,对Region和Properties进行查找,并在js中的json变量中设置它们进行操作。