admin 发表于 2016-3-2 13:57:00

Yii2 如何实现二级联动?

视图
场景:点击一个分类,更换一个URL
<?php $form = ActiveForm::begin([
    'id'   => strtolower($model->formName()),
    'action' => ['/apitools/default/index']
]); ?>

<?= $form->field($model, 'type')->dropDownList(
    ApiTool::getType(),
    ['prompt' => '选择一个分类']
) ?>
<?= $form->field($model, 'url')->dropDownList(
    [],
    ['prompt' => '选择一个url']
) ?>
<?php ActiveForm::end(); ?>jQuery
关于 JsBlock,参考官方文档
<?php JsBlock::begin() ?>
    <script>
            jQuery("#apitool-type").change(function () {
                var html = '';
                $.ajax({
                  url: '<?= \yii\helpers\Url::to(["/apitools/default/type-list"]) ?>',
                  type: 'GET',
                  dataType: 'json',
                  data: {type: $(this).val()},
                  success: function (msg) {
                        $.each(msg, function (key, val) {
                            html += '<option value="' + key + '">' + val + '</option>';
                        });
                        $("#apitool-url").html(html);
                  }
                })
            });
      });
    </script>
<?php JsBlock::end() ?>Controller
返回JSON的 key-value
public function actionTypeList()
{
    $type = \Yii::$app->request->get('type');
    return Json::encode(ApiTool::getUrl($type));
}
页: [1]
查看完整版本: Yii2 如何实现二级联动?