角色路由
Route::get('/role/index','User\RoleController@index')->name('user.role.index');
Route::get('role/node{role}','User\RoleController@node')->name('user.role.node');
Route::post('role/node{role}','User\RoleController@nodeSever')->name('user.role.node');
角色控制器
<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use App\Models\Node;
use App\Models\Role;
use Illuminate\Http\Request;
use think\View;
class RoleController extends BaseController
{
public function index(Request $request)
{
$name = $request->get('name');
$data = Role::when($name,function ($query) use ($name) {
$query->where('name','like',"%{$name}%");
})->paginate($this->pagesize);
return view('user.role.index',compact('data'));
}
public function node(Role $role){
$data = $role->nodes()->pluck('id')->toArray();
$nodeAll=(new Node())->getAllList();
return view('user.role.node',compact('role','nodeAll','data'));
}
public function nodeSever(Request $request,Role $role){
$role->nodes()->sync($request->get('node'));
return redirect(route('user.role.index',$role));
}
}
Node模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Node extends Base
{
protected $guarded=[];
public function setRouteNameAttribute($value){
$this->attributes['route_name'] = empty($value)?'':$value;
}
public function getMenuAttribute(){
if ($this->is_menu == '1'){
return '<span class="label label-success radius">是</span>';
}
return '<span class="label label-danger radius">否</span>';
}
public function getAllList(){
$data = self::get()->toArray();
return $this->treelevel($data);
}
public function getMenuData(){
$data = self::where('is_menu','1')->get()->toArray();
$data = self::formatDate($data);
$menu = $this->treeMenu($data);
return $menu;
}
}
Role模型
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Role extends Base
{
protected $guarded=[];
public function nodes(){