需要在控制器中重写getLeftCate方法
<?php
namespace app\controller;
use app\BaseController;
use think\db\Query;
use tpScriptVueCurd\option\LeftCate;
/**
* 人员控制器
*/
class User extends BaseController
{
use \tpScriptVueCurd\base\controller\Controller;
public function init(): void
{
$this->title='人员信息';
$this->md=\app\model\User::make($this);
}
/**
* 所有子表的控制器对象
* @return array
*/
protected function childControllers(): array
{
return [
Pets::make(),
];
}
public function getLeftCate(): ?LeftCate
{
$leftCate=new LeftCate(function (){
return [
['value'=>1,'pvalue'=>0,'title'=>'浙江省'],
['value'=>11,'pvalue'=>1,'title'=>'绍兴市'],
['value'=>12,'pvalue'=>1,'title'=>'杭州市'],
['value'=>13,'pvalue'=>1,'title'=>'湖州市'],
['value'=>101,'pvalue'=>12,'title'=>'西湖区'],
['value'=>102,'pvalue'=>12,'title'=>'萧山区'],
//禁用选项
['value'=>103,'pvalue'=>12,'title'=>'滨江区','disabled'=>true],
['value'=>2,'pvalue'=>0,'title'=>'安徽省'],
['value'=>3,'pvalue'=>0,'title'=>'河南省'],
['value'=>4,'pvalue'=>0,'title'=>'江西省'],
];
});
$leftCate->show=true;
$leftCate->paramName='area_id';
$leftCate->title='人员所在地区';
$leftCate->where=function (Query $query)use($leftCate){
$areaId=$this->request->get('area_id/d');
if(empty($areaId)){
//不进行筛选
return;
}
$list=$leftCate->getList();
if(!isset($list[$areaId])){
$this->error('参数area_id值不合法');
}
$areaIdIds=$list[$areaId]['childLastVals']?:[$areaId];
$query->where('area_id','in',$areaIdIds);
};
return $leftCate;
}
}
注意:如果paramName设置的值为base_id时,会将右侧列表当为左侧树形列表的子表,此时,不需要写where条件
<?php
namespace app\controller;
use tpScriptVueCurd\base\model\BaseModel;
use tpScriptVueCurd\option\FunControllerListChildBtn;
use tpScriptVueCurd\option\LeftCate;
/**
* 宠物控制器
*/
class Pets extends \app\BaseController
{
use \tpScriptVueCurd\base\controller\Controller;
public function init(): void
{
$this->title='宠物';
$this->md=\app\model\Pets::make($this);
}
protected function parentController(): ?object
{
return User::make();
}
public static function baseListBtnText(FunControllerListChildBtn $btn, BaseModel $info): void
{
$btn->text='所有宠物';
}
public function getLeftCate(): ?LeftCate
{
$leftCate=new LeftCate(function (){
return \app\model\User::field('id AS value,0 AS pvalue,name AS title')->select()->toArray();
});
$leftCate->show=true;
$leftCate->title='人员';
$leftCate->paramName='base_id';
return $leftCate;
}
}