php - 保存依赖下拉列表的数据 - Yii

标签 php mysql ajax yii

我正在实现一个依赖下拉列表,并希望将他们的 ID 保存在表 CANDIDATE 中。
我有一个名为 CENTER 的表,它有两列 ID,NAME。
我的另一个表是 DISTRICT,它包含三列 ID、NAME 和 CENTER_ID。
通过选择 CENTER ,我填充了 DISTRICT 下拉列表,但 district_id 没有保存在表 CANDIDATE 中。

_form

<div class="row">
    <?php echo $form->labelEx($model, 'district_id'); ?>
    <?php

    $dist = CHtml::listData(Center::model()->findAll(array('order' => 'id')), 'id', 'name');
    echo $form->dropDownList($model, 'center_id', $dist, array(
        'prompt' => '–select district–',
        'ajax' => array('type' => 'POST',
            'url' => CController::createUrl('candidate/districts'),
            'update' => '#center_id',

        )

    ));
    ?>
    <?php
    echo CHtml::dropDownList('center_id','', array());
    ?>
</div>

候选 Controller

 public function actionDistricts() {
    $centers = District::model()->findAll('center_id =:id', array(':id' => (int) $_POST['Candidate']['center_id']));
    $return = CHtml::listData($centers, 'id', 'name');
    foreach ($return as $centerId  => $centerName) {
        echo CHtml::tag('option', array('value' => $centerId), CHtml::encode($centerName), true);
    }
}

最佳答案

1) 似乎您的网址未正确创建:

'url' => CController::createUrl('districts')

尝试:

'url' => CController::createUrl('candidate/districts')

2) 您发布的表单:

$form->dropDownList($model, 'district_id', $dist...

它将 district_id 发布到 CandidateController/actionDistricts(),您可以在其中执行以下操作:

 $centers = Center::model()->findAll('id=:id', array(':id' => (int) $_POST['Candidate']['center_id']));

我看不到任何包含 center_id 的输入,此外,如果您按主键 (id) 搜索,触发 Center::model()->findAll('id:id'..) 没有任何意义,做 Center::model()->findByPk($id);

无论如何,回到问题上来,你的 Firebug 日志说明了一切,它无法从 $_POST 变量中读取 center_id,所以要完成它,请尝试重写 actionDistricts()。

我猜不出你的数据库有什么样的关系(一个区,每个 1 个中心?),所以我无法在这里完全解决问题。但是你应该重写

$centers = Center::model()->findAll('id=:id', array(':id' => (int) $_POST['Candidate']['center_id']));

到期望 $_POST['Candidate']['district_id'] 的东西。

关于php - 保存依赖下拉列表的数据 - Yii,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20271996/

相关文章:

javascript - 如何在网站上保留用户的事件日志?

javascript - 将php返回值分配给javascript变量

javascript - ajax post请求后范围变量没有改变

python - 如何让 Cloudfiles FormPost 返回 "Access-Control-Allow-Origin" header 以启用 CORS?

php - PHP 中的时差

PHP和sql查询编码utf 8个德文字母

mysql - 无法使用 View 模块创建 View

mysql - 本周观看次数最多的视频

java - 如何从同一模型中的不同表中检索对象列表?

javascript - foreach 数组的未定义结果 javascript