学校班级二级联动
StudentController.php
$form->select('school_id', '学校')->options(
School::all()->pluck('name','id'))
->load('class_id', '/admin/classList');
$form->select('class_id','班级')->options(function ($id) {
return Classs::where('id',$id)->pluck('name', 'id');
});
路由-添加联动方法 app\admin\route.php
$router->get('classList','StudentController@classList');
联动方法 StudentController.php
public function classList(Request $request){
$projectId = $request->get('q');
return Classs::where('sid',$projectId)->get(['id', DB::raw('name as text')]);
}
无限极分类及接口
CateController.php
<?php
namespace App\Admin\Controllers;
use App\Models\Cate;
use Encore\Admin\Controllers\HasResourceActions;
use Encore\Admin\Layout\{Column, Row, Content};
use Encore\Admin\{Tree,Form};
use Encore\Admin\Widgets\Box;
/**
* 分类管理
* @package App\Admin\Controllers
*/
class CateController extends Content
{
use HasResourceActions;
protected $title = '分类';
/**
* 首页
* @param Content $content
* @return Content
*/
public function index(Content $content)
{
return $content->title('分类')
->description('列表')
->row(function (Row $row){
// 显示分类树状图
$row->column(6, $this->treeView()->render());
$row->column(6, function (Column $column){
$form = new \Encore\Admin\Widgets\Form();
$form->action(admin_url('cates'));
$form->select('pid', '分类')->options(Cate::selectOptions());
$form->text('title', '名称')->required();
$form->number('sort', '排序')->default(99)->help('越小越靠前');
$column->append((new Box(__('添加分类'), $form))->style('success'));
});
});
}
/**
* 树状视图
* @return Tree
*/
protected function treeView()
{
return Cate::tree(function (Tree $tree){
$tree->disableCreate(); // 关闭新增按钮
$tree->branch(function ($branch) {
return "<strong>{$branch['title']}</strong>"; // 标题添加strong标签
});
});
}
/**
* 编辑
* @param $id
* @param Content $content
* @return Content
*/
public function edit($id, Content $content)
{
return $content->title(__('Cate'))
->description(__('edit'))
->row($this->form()->edit($id));
}
/**
* 表单
* @return Form
*/
public function form()
{
$form = new Form(new Cate());
//$form->display('id', 'ID');
$form->select('pid', '分类')->options(Cate::selectOptions());
$form->text('title', '名称')->required();
$form->number('sort', '排序')->default(99)->help('越小越靠前');
$form->tools(function (Form\Tools $tools) {
//$tools->disableList();
$tools->disableDelete();
$tools->disableView();
});
$form->footer(function ($footer) {
$footer->disableReset();
$footer->disableViewCheck();
$footer->disableEditingCheck();
$footer->disableCreatingCheck();
});
return $form;
}
}
模型
<?php
namespace App\Models;
use Encore\Admin\Traits\AdminBuilder;
use Encore\Admin\Traits\ModelTree;
use Illuminate\Database\Eloquent\Model;
class Cate extends Model
{
use ModelTree,AdminBuilder; // 使用laravel-admin 的 tree
//protected $table = 'cate';
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
$this->setParentColumn('pid'); // 设置父类ID的字段名称
$this->setOrderColumn('sort'); // 设置排序字段名称
$this->setTitleColumn('title'); // 设置标题名称
}
/**
* 该分类的子分类
*/
public function child()
{
return $this->hasMany(get_class($this), 'pid', $this->getKeyName());
}
/**
* 该分类的父分类
*/
public function parent()
{
return $this->hasOne(get_class($this), $this->getKeyName(), 'pid');
}
}
无限极分类接口
<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Models\Cate;
class CateController extends ApiController
{
function getTree($id,$array){
//第一步 构造数据
$items = array();
foreach($array as $value){
$items[$value['id']] = $value;
}
//第二部 遍历数据 生成树状结构
$tree = array();
foreach($items as $key => $value){
if(isset($items[$value['pid']])){
$items[$value['pid']]['son'][] = &$items[$key];
}else{
if((empty($id))||($id==$value['id']))
$tree[] = &$items[$key];
}
}
return $tree;
}
//无限极分类接口
public function cates(Request $request)
{
$id = $request->id;
$data = Cate::all()->toArray();
return $this->success($this->getTree($id,$data));
}
}
测试接口
不传1级id输出全部分类
传1级id查出此id下列表