我有两个表客户和位置。位置包含字段 ID、国家/地区、区域、州和城市。客户表具有外键location_id。
创建客户时,我需要在创建客户窗体上显示国家/地区、区域、州和城市的下拉列表,下拉列表中的值应从位置表中填充。当用户选择这些字段时,相应的位置 ID 应保存在 客户 表的location_id字段中。
更新客户时,应根据location_id外键在表单中填充国家/地区、区域、州和城市下拉列表的值。这些下拉列表值的任何更改都应另存为外键location_id。
任何对任何现有帖子/文章的输入或指针都将有很大帮助。
任何对任何现有帖子/文章的输入或指针都将有很大帮助。
好的,一些提示
1.
下拉列表中的值应从位置表中填充。
为此,我认为,您需要熟悉 yii 中有关依赖下拉列表的帖子,以便在从另一个下拉列表中选择时填充一个下拉列表。
阿拉伯数字。
当用户选择这些字段时,相应的位置 ID 应保存在 客户 表的location_id字段中。
为此,您可能需要在下拉/文本字段选择/更改时执行一些 ajax 调用。你可以通过外部js函数来做到这一点,但我推荐使用带有Yii的Select2。例如,在 Select2 中的项目更改中,对控制器eventsPerformance
执行 ajax 调用,并将数据save
操作作为整个表单js:$("#performance-form").serialize()
的序列化:
$this->widget('ext.select2.ESelect2',array(
'attribute' => 'subStatus',
'model'=>$performance,
'data'=>$subStatusArray,
'htmlOptions'=>array(
'onChange'=>CHtml::ajax(array('type'=>'POST',
'url'=>'eventsPerformance/save',
'data'=>'js:$("#performance-form").serialize()',)),
),
));
请随时询问是否需要更多帮助。
这里没什么特别的。只需使用名称以 active
开头的方法,您的下拉列表将预先选择正确的选项。我相信您正在使用 Gii 来创建您的 CRUD 操作。因此,您只需要在用户update
/create
视图中添加位置滴。例如
$user = User::model()->findByPk(99);
$locations = Location::model()->findAll();
$locationList = CHtml::listData($locations, 'id', 'country');
echo CHtml::activeDropDownList($user, 'location_id', $locationList);
但我认为您的描述不正确,因为在您的Location
表中,一个 ID 标识了国家/地区-州-城市的整个组合,即:
1 | USA | NULL | Arizona | Phoenix
2 | ... | ...
如果需要每个数据库的下拉列表,则需要创建单独的数据库表。
// countries
id | title
// cities
id | country_id | title