fastadmin笔记,关联查询,下拉框,关联下拉框查询,编辑时下拉框默认值

记录熟悉fastadmin框架时的笔记

关联查询

在model中增加方法

	//方法名要与关联表名一致
   public function routeCfg()
    {
    //参数
    //参数一   关联的模型所在路径 
    //参数二   外键字段名称
    //参数三   关联的主键名称
        $cfg=$this->belongsTo('app\admin\model\route\Cfg','rc_serial','rc_serial')->setEagerlyType(0);

        return $cfg;
    }

在模型中调用


//copy  index()方法

    /**
     * 查看
     *
     * @return string|Json
     * @throws \think\Exception
     * @throws DbException
     */
    public function index()
    {
      .......
      .......
      $list = $this->model
            ->with(['routecfg']) //关联,与刚刚model的方法名一致
            ->where($where)
            ->where('rc_status','>=','3')
            ->order($sort, $order)
            ->paginate($limit);
      ......
      ......

    }


下拉框设置

首先在模型中添加

    /**
     * 尺寸
     * @return string[]
     */
    public function psSize()
    {
        return ['2'=>__('Size 1'),'4'=>__('Size 2'),'6'=>__('Size 3'),'8'=>__('Size 4')];
    }

在lang zh-cn 中添加

 return [
 	......
 	......
 	
	'Size 1'          => '2',
    'Size 2'          => '4',
    'Size 3'          => '6',
    'Size 4'          => '8',
]

回到模型中,构造方法 _initialize() 中

    public function _initialize()
    {
       ......
       ......
       
       $this->view->assign("psSize",$this->model->psSize());
   }

在视图 view 中


   <div class="form-group">
        <label class="control-label col-xs-12 col-sm-2">{:__('Ps_size')}:</label>
        <div class="col-xs-12 col-sm-8">
            <select id="c-ps_size" class="form-control selectpicker" name="row[ps_size]">
            **<!-- psSize 为构造函数中添加的-->**
                {foreach name="psSize" item="vo"}
                    <option value="{$key}" {in name="key" value="'1'" }selected{/n} name="key" >{$vo}</option>
                {/foreach}
            </select>
        </div>

    </div>

下拉框关联查询

在模型 model 中增加方法

    /**
     * 下拉框
     * @return false|Model[]
     * @throws \think\exception\DbException
     */
    public function getSerialList()
    {
    	//从关联的model 中查询表的数据
        $listModel= model('app\admin\model\route\Cfg')->find();
        //条件查询,根据自己需求编辑
        $list = $listModel->field('rc_name,rc_serial')->where('rc_status','>=','3')->select();
        return $list;
    }

随后的操作和下拉框的一样,在构造方法中 添加,在视图中添加下拉框即可

编辑中下拉框默认值

和添加的大同小异,区别在于 option 标签中 {} 的值

    <div class="form-group">
        <label class="control-label col-xs-12 col-sm-2">{:__('Ps_size')}:</label>
        <div class="col-xs-12 col-sm-8">

            <select id="c-ps_size"  data-rule="required" class="form-control selectpicker" name="row[ps_size]">
                {foreach name="psSize" item="vo"}
                <option name="key" value="{$key}" {in name="key" value="$row.ps_size"} selected{/in} >{$vo}</option>
                {/foreach}
            </select>
        </div>
    </div>

关联查询,单选框radio

在 控制器,添加中增加

  /**
     * 添加
     *
     * @return string
     * @throws \think\Exception
     */
    public function add()
    {
        if (false === $this->request->isPost()) {
            //查找名称
            $capachityList=Db::name("关联表名")->where("1=1")->order("字段 ASC")->select();
            $this->view->assign("capachityList", $capachityList);
            return $this->view->fetch();
        }
      ......
      ......
 	}

在前端html页面中调用

<div class="form-group">
        <label class="control-label col-xs-12 col-sm-2">{:__('名称')}:</label>
        <div class="col-xs-12 col-sm-8">

            <div class="radio">
                {foreach name="capachityList" item="vo"}
                <label for="row[capacity_str]-{$key}">

                    <input id="row[capacity_str]-{$key}" name="row[capacity_str]" type="radio"
                           value="{$vo.mc_name}"  />
                    {$vo.mc_name}
                </label>
                {/foreach}
            </div>

        </div>
    </div>

你可能感兴趣的:(PHP,笔记,PHP,fastadmin,phpstorm)