(以下贴出的只是部分核心代码;并不代表完整思路)
view.php
<?= $form->field($model,'level_one_id')->dropDownList([0=>'--请选择一级分类--']+$model->getCategoryList(0),
[
'onchange'=>'
$(".form-group.field-enterprise-category_id").hide();
$.post("'.yii::$app->urlManager->createUrl('admin/enterprises/site').'?typeid=1&p_id="+$(this).val(),function(data){
$("select#enterprises-level_two_id").html(data);
});',
]) ?>
<?= $form->field($model, 'level_two_id')->dropDownList([0=>'--请选择二级分类--']+$model->getCategoryList($model->level_one_id),
[
'onchange'=>'
$(".form-group.field-enterprise-category_id").show();
$.post("'.yii::$app->urlManager->createUrl('admin/enterprises/site').'?typeid=2&p_id="+$(this).val(),function(data){
$("select#enterprises-level_three_id").html(data);
});',
]) ?>
<?= $form->field($model, 'level_three_id')->dropDownList([0=>'--请选择三级分类--']+$model->getCategoryList($model->level_two_id)) ?>
controller.php
/**
* 获取商家分类信息
* @param $p_id
* @param int $typeid
*/
public function actionSite($p_id,$typeid=0){
$model = new Enterprises();
$model = $model->getCategoryList($p_id);
if($typeid == 1){$notice="--请选择二级分类--";}else if($typeid == 2 && $model){$notice="--请选择三级分类--";}
echo Html::tag('option',$notice, ['value'=>'0']) ;
foreach($model as $value=>$name)
{控制器中的site方法中用到了html::tag,请使用命名空间use yii\helpers\Html;否则无法正确输出。
echo Html::tag('option',Html::encode($name),array('value'=>$value));
}
}
model.php
public function getCategoryList($p_id){
$model = EnterpriseCategory::find()->where('p_id=:p_id',[':p_id'=>$p_id])->all();
return ArrayHelper::map($model, 'id', 'p_name');
}
参考链接:http://www.yiichina.com/tutorial/468