yii2 ActiveForm widget 二级菜单

yii2 ActiveForm widget 二级菜单

创建 backend\widgets\device_address\Device_address 文件
并在 视图页面引入

 <?= $form->field($model, 'address_0',[
          'template'=>"{input}"
      ])->widget('backend\widgets\device_address\Device_address',[
      'form'=>$form,
      // 'address_X'=>$model->address_0,
      'model'=>$model,
  ]) ?>

backend\widgets\device_address\Device_address.php
继承 yii\widgets\InputWidget;
创建变量

<?php
namespace backend\widgets\device_address;

use Yii;
use yii\widgets\InputWidget;
use common\models\wechat\Attachment;
use yii\base\Widget;
use common\models\wechat\AttachmentNews;
use common\helpers\{StringHelper,ArrayHelper};
use common\helpers\Html;
use common\school\School_help; //校枚举参数
use common\models\school\device\SchoolDeviceCampus;

/**
 * Class Select
 * @package backend\widgets\selector
 * @author lj
 */
class Device_address extends InputWidget
{
     /**
     * 模型
     *
     * @var array
     */
    public $model;
    public $school_id;
    public $Campus;
    /**
     *  校区
     *
     * @var array
     */
    public $address_0 = 'address_0';
    public $address_1 = 'address_1';

    /**
     * 表单
     * @var
     */
    public $form;

    public function init()
    {
        parent::init();
        $this->school_id = School_help::SchoolID(); //当前所属学校
        $this->Campus =  ArrayHelper::array_to_one(SchoolDeviceCampus::find()->asArray()->select('id,campus')->where(['school_id'=>$this->school_id])->andWhere(['pid'=>0])->all(),'id','campus');
    }

    public function run()
    {
        return $this->render('select',[
            'form' => $this->form,
            'model' => $this->model,
            'address_0' => $this->address_0,
            'address_1' => $this->address_1,
            'school_id' => $this->school_id,
            'Campus' => $this->Campus,
            'url'=>Yii::$app->urlManager->createUrl(['/device_address/index']),
        ]);
    }
}

上面用了个 Yii::$app->urlManager->createUrl(['/device_address/index'])
我们 controllerMap创建控制器地图
在这里插入图片描述
这个用于 二级菜单 ajax

Device_addressController 内容

<?php
namespace backend\widgets\device_address;

use yii;
use yii\web\Response;
use common\helpers\Html;
use common\school\School_help; //校枚举参数
use common\models\school\device\SchoolDeviceCampus;
use common\helpers\{StringHelper,ArrayHelper};
/**
 * Class \device_addressController
 * @package backend\widgets\\device_address
 * @author lj
 */
class Device_addressController extends yii\web\Controller
{
    /**
     * 行为控制
     */
    public function behaviors()
    {
        return [
            'access' => [
                'class' => yii\filters\AccessControl::class,
                'rules' => [
                    [
                        'allow' => true,
                        'roles' => ['@'],// 登录
                    ],
                ],
            ],
        ];
    }

    /**
     * 首页
     */
    public function actionIndex($pid, $type_id = 0,$school_id)
    {
        Yii::$app->response->format = Response::FORMAT_JSON;
        $data =SchoolDeviceCampus::find()->asArray()->select('id,campus')->where(['school_id'=>$school_id])->andWhere(['pid'=>$pid])->all();
        return ArrayHelper::array_to_one($data,'id','campus');
    }
}

视图 调用 Device_addressController 返回 数据

<?php
use common\helpers\Html;
use yii\helpers\Url;
?>
<div class="form-group field-schooldevicedeviceall-administrator has-success"> 
	<div class="col-sm-2 text-right">
	<label class="control-label" for="schooldevicedeviceall-administrator">地址</label>
	</div>
	<div class="col-sm-4">
	<?= $form->field($model, $address_0,[
							'template'=>"{input}",
							
					])->dropDownList($Campus,['prompt' => '-- 请选校区 --','onchange'=>"widget_provinces(this,1,$school_id)",]); ?>
	<div class="help-block">
		
	</div>
	</div> 
	<div class="col-sm-5">
	<?= $form->field($model, $address_1,[
							'template'=>"{input}"
					])->dropDownList([0,1,2,3,4],['prompt' => '-- 请选地址 --','se2'=>1]); ?>
	<div class="help-block">
		
	</div>
	</div> 
</div>

<script>
    function widget_provinces(obj, type_id,school_id) {

        var pid = $(obj).val();
        var str = "<option value='0'>-- 请选地址 --</option>"
        $.ajax({
            type :"get",
            url : "<?= $url; ?>",
            dataType : "json",
            data : {type_id:type_id, pid:pid,school_id:school_id},
            success: function(data){
            	$.each(data,function(x,y){
            		console.log(x)
            		str +="<option value='"+x+"'>"+y+"</option>";
            	})
                $("select[se2='1']").html(str)
                str= ''
            }
        });
    }
</script>
							
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值