Bài 21: Tạo roles, Cập nhật roles, Xóa roles

Bài 21: Tạo roles, Cập nhật roles, Xóa roles

  

-    Vào web.php
<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/admin', 'AdminController@loginAdmin');
Route::post('/admin', 'AdminController@postloginAdmin');

Route::get('/home', function () {
return view('home');
});

Route::prefix('admin')->group(function () {
//category
Route::prefix('categories')->group(function () {
Route::get('/',[
'as'=> 'categories.index',
'uses' => 'CategoryController@index'
]);

Route::get('/create',[
'as'=> 'categories.create',
'uses' => 'CategoryController@create'
]);
Route::post('/store',[
'as'=> 'categories.store',
'uses' => 'CategoryController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'categories.edit',
'uses' => 'CategoryController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'categories.update',
'uses' => 'CategoryController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'categories.delete',
'uses' => 'CategoryController@delete'
]);
});
//menu
Route::prefix('menus')->group(function () {
Route::get('/',[
'as'=> 'menus.index',
'uses' => 'MenuController@index'
]);
Route::get('/create',[
'as'=> 'menus.create',
'uses' => 'MenuController@create'
]);
Route::post('/store',[
'as'=> 'menus.store',
'uses' => 'MenuController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'menus.edit',
'uses' => 'MenuController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'menus.update',
'uses' => 'MenuController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'menus.delete',
'uses' => 'MenuController@delete'
]);
});

//Product
Route::prefix('product')->group(function () {
Route::get('/',[
'as'=> 'product.index',
'uses' => 'AdminProductController@index'
]);
Route::get('/create',[
'as'=> 'product.create',
'uses' => 'AdminProductController@create'
]);
Route::post('/store',[
'as'=> 'product.store',
'uses' => 'AdminProductController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'product.edit',
'uses' => 'AdminProductController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'product.update',
'uses' => 'AdminProductController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'product.delete',
'uses' => 'AdminProductController@delete'
]);
});

//Slider
Route::prefix('slider')->group(function () {
Route::get('/',[
'as'=> 'slider.index',
'uses' => 'SliderAdminController@index'
]);
Route::get('/create',[
'as'=> 'slider.create',
'uses' => 'SliderAdminController@create'
]);
Route::post('/store',[
'as'=> 'slider.store',
'uses' => 'SliderAdminController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'slider.edit',
'uses' => 'SliderAdminController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'slider.update',
'uses' => 'SliderAdminController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'slider.delete',
'uses' => 'SliderAdminController@delete'
]);
});

//Settings
Route::prefix('settings')->group(function () {
Route::get('/',[
'as'=> 'settings.index',
'uses' => 'AdminSettingController@index'
]);
Route::get('/create',[
'as'=> 'settings.create',
'uses' => 'AdminSettingController@create'
]);
Route::post('/store',[
'as'=> 'settings.store',
'uses' => 'AdminSettingController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'settings.edit',
'uses' => 'AdminSettingController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'settings.update',
'uses' => 'AdminSettingController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'settings.delete',
'uses' => 'AdminSettingController@delete'
]);
});

//User
Route::prefix('users')->group(function () {
Route::get('/',[
'as'=> 'users.index',
'uses' => 'AdminUserController@index'
]);
Route::get('/create',[
'as'=> 'users.create',
'uses' => 'AdminUserController@create'
]);
Route::post('/store',[
'as'=> 'users.store',
'uses' => 'AdminUserController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'users.edit',
'uses' => 'AdminUserController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'users.update',
'uses' => 'AdminUserController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'users.delete',
'uses' => 'AdminUserController@delete'
]);
});

//Role
Route::prefix('roles')->group(function () {
Route::get('/',[
'as'=> 'roles.index',
'uses' => 'AdminRoleController@index'
]);
Route::get('/create',[
'as'=> 'roles.create',
'uses' => 'AdminRoleController@create'
]);
Route::post('/store',[
'as'=> 'roles.store',
'uses' => 'AdminRoleController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'roles.edit',
'uses' => 'AdminRoleController@edit'
])
;
});
});
-    Vào AdminRoleController.php
<?php

namespace App\Http\Controllers;
use App\Permission;
use App\Role;
use Illuminate\Http\Request;

class AdminRoleController extends Controller
{
private $role;
private $permission;
public function __construct(Role $role,Permission $permission)
{
$this->role = $role;
$this->permission = $permission;
}
public function index()
{
$roles = $this->role->paginate(10);
return view('admin.role.index',compact('roles'));
}
public function create()
{
$permissionsParent = $this->permission->where('parent_id',0)->get();
return view('admin.role.add',compact('permissionsParent'));
}
public function store(Request $request)
{
$role = $this->role->create([
'name'=>$request->name,
'display_name'=>$request->display_name
]);

$role->permissions()->attach($request->permission_id);
return redirect()->route('roles.index');
}
}
-    Vào resoucer => admin => role => add.blade.php
<!-- Stored in resources/views/child.blade.php -->

@extends('layouts.admin')

@section('title')
<title>Trang ch</title>
@endsection

@section('css')
<link rel="stylesheet" href="{{asset('admins/role/add/add.css')}}">
@endsection

@section('js')
<script src="{{asset('admins/role/add/add.js')}}"></script>
@endsection

@section('content')
<div class="content-wrapper">
@include('partials.content-header',['name'=>'Roles', 'key'=>'Add']);
<div class="content">
<div class="container-fluid">
<div class="row">
<form action="{{ route("roles.store") }}" method="post" enctype="multipart/form-data" style="width: 100%">
<div class="col-md-12">
@csrf
<div class="form-group">
<label>Tên vai trò</label>
<input class="form-control "
name="name"
placeholder="Nhp tên vai trò"
value="{{old('name')}}"
>

</div>
<div class="form-group">
<label>Mô tvai trò</label>
<textarea name="display_name"
rows="4"
class="form-control "
> {{old('display_name')}}</textarea>
</div>
</div>

<div class="col-md-12">
<div class="row">
@foreach($permissionsParent as $permissionsParentItem)
<div class="card boder-primary mb-3 col-md-12">
<div class="card-header">
<label>
<input type="checkbox" value="" class="checkbox_wapper">
</label>
Module {{ $permissionsParentItem->name }}
</div>
<div class="row">
@foreach($permissionsParentItem->permissionChildrent as $permissionChildrentItem)
<div class="card-body text-primary col-md-3">
<h5 class="card-title">
<label>
<input type="checkbox" name="permission_id[]"
class="checkbox_childrent"
value="{{$permissionChildrentItem->id}}">
</label>
{{$permissionChildrentItem->name}}
</h5>
</div>
@endforeach
</div>
</div>
@endforeach
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</div>
@endsection

-    Vào Role.php
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
protected $guarded = [];
public function permissions()
{
return $this->belongsToMany(Permission::class, 'permission_role','role_id','permission_id');
}
}

Cập nhật roles

-    Vào web.php
<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/admin', 'AdminController@loginAdmin');
Route::post('/admin', 'AdminController@postloginAdmin');

Route::get('/home', function () {
return view('home');
});

Route::prefix('admin')->group(function () {
//category
Route::prefix('categories')->group(function () {
Route::get('/',[
'as'=> 'categories.index',
'uses' => 'CategoryController@index'
]);

Route::get('/create',[
'as'=> 'categories.create',
'uses' => 'CategoryController@create'
]);
Route::post('/store',[
'as'=> 'categories.store',
'uses' => 'CategoryController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'categories.edit',
'uses' => 'CategoryController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'categories.update',
'uses' => 'CategoryController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'categories.delete',
'uses' => 'CategoryController@delete'
]);
});
//menu
Route::prefix('menus')->group(function () {
Route::get('/',[
'as'=> 'menus.index',
'uses' => 'MenuController@index'
]);
Route::get('/create',[
'as'=> 'menus.create',
'uses' => 'MenuController@create'
]);
Route::post('/store',[
'as'=> 'menus.store',
'uses' => 'MenuController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'menus.edit',
'uses' => 'MenuController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'menus.update',
'uses' => 'MenuController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'menus.delete',
'uses' => 'MenuController@delete'
]);
});

//Product
Route::prefix('product')->group(function () {
Route::get('/',[
'as'=> 'product.index',
'uses' => 'AdminProductController@index'
]);
Route::get('/create',[
'as'=> 'product.create',
'uses' => 'AdminProductController@create'
]);
Route::post('/store',[
'as'=> 'product.store',
'uses' => 'AdminProductController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'product.edit',
'uses' => 'AdminProductController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'product.update',
'uses' => 'AdminProductController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'product.delete',
'uses' => 'AdminProductController@delete'
]);
});

//Slider
Route::prefix('slider')->group(function () {
Route::get('/',[
'as'=> 'slider.index',
'uses' => 'SliderAdminController@index'
]);
Route::get('/create',[
'as'=> 'slider.create',
'uses' => 'SliderAdminController@create'
]);
Route::post('/store',[
'as'=> 'slider.store',
'uses' => 'SliderAdminController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'slider.edit',
'uses' => 'SliderAdminController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'slider.update',
'uses' => 'SliderAdminController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'slider.delete',
'uses' => 'SliderAdminController@delete'
]);
});

//Settings
Route::prefix('settings')->group(function () {
Route::get('/',[
'as'=> 'settings.index',
'uses' => 'AdminSettingController@index'
]);
Route::get('/create',[
'as'=> 'settings.create',
'uses' => 'AdminSettingController@create'
]);
Route::post('/store',[
'as'=> 'settings.store',
'uses' => 'AdminSettingController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'settings.edit',
'uses' => 'AdminSettingController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'settings.update',
'uses' => 'AdminSettingController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'settings.delete',
'uses' => 'AdminSettingController@delete'
]);
});

//User
Route::prefix('users')->group(function () {
Route::get('/',[
'as'=> 'users.index',
'uses' => 'AdminUserController@index'
]);
Route::get('/create',[
'as'=> 'users.create',
'uses' => 'AdminUserController@create'
]);
Route::post('/store',[
'as'=> 'users.store',
'uses' => 'AdminUserController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'users.edit',
'uses' => 'AdminUserController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'users.update',
'uses' => 'AdminUserController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'users.delete',
'uses' => 'AdminUserController@delete'
]);
});

//Role
Route::prefix('roles')->group(function () {
Route::get('/',[
'as'=> 'roles.index',
'uses' => 'AdminRoleController@index'
]);
Route::get('/create',[
'as'=> 'roles.create',
'uses' => 'AdminRoleController@create'
]);
Route::post('/store',[
'as'=> 'roles.store',
'uses' => 'AdminRoleController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'roles.edit',
'uses' => 'AdminRoleController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'roles.update',
'uses' => 'AdminRoleController@update'
])
;
});
});
-    Vào AdminRoleController.php
<?php

namespace App\Http\Controllers;
use App\Permission;
use App\Role;
use Illuminate\Http\Request;

class AdminRoleController extends Controller
{
private $role;
private $permission;
public function __construct(Role $role,Permission $permission)
{
$this->role = $role;
$this->permission = $permission;
}
public function index()
{
$roles = $this->role->paginate(10);
return view('admin.role.index',compact('roles'));
}
public function create()
{
$permissionsParent = $this->permission->where('parent_id',0)->get();
return view('admin.role.add',compact('permissionsParent'));
}
public function store(Request $request)
{
$role = $this->role->create([
'name'=>$request->name,
'display_name'=>$request->display_name
]);

$role->permissions()->attach($request->permission_id);
return redirect()->route('roles.index');
}
public function edit($id)
{
$permissionsParent = $this->permission->where('parent_id',0)->get();
$role = $this->role->find($id);
$permissionsChecked = $role->permissions;
return view('admin.role.edit',compact('permissionsParent','role','permissionsChecked'));
}
public function update(Request $request,$id)
{
$role = $this->role->find($id);
$role->update([
'name'=>$request->name,
'display_name'=>$request->display_name
]);
$role->permissions()->sync($request->permission_id);
return redirect()->route('roles.index');
}
}
-    Vào resoucer => admin => role =>  tạo edit.blade.php
<!-- Stored in resources/views/child.blade.php -->

@extends('layouts.admin')

@section('title')
<title>Trang ch</title>
@endsection

@section('css')
<link rel="stylesheet" href="{{asset('admins/role/add/add.css')}}">
@endsection

@section('js')
<script src="{{asset('admins/role/add/add.js')}}"></script>
@endsection

@section('content')
<div class="content-wrapper">
@include('partials.content-header',['name'=>'Roles', 'key'=>'Edit']);
<div class="content">
<div class="container-fluid">
<div class="row">
<form action="{{ route('roles.update',['id'=>$role->id]) }}" method="post" enctype="multipart/form-data" style="width: 100%">
<div class="col-md-12">
@csrf
<div class="form-group">
<label>Tên vai trò</label>
<input class="form-control "
name="name"
placeholder="Nhp tên vai trò"
value="{{$role->name}}"
>

</div>
<div class="form-group">
<label>Mô tvai trò</label>
<textarea name="display_name"
rows="4"
class="form-control "
> {{$role->display_name}}</textarea>
</div>
</div>

<div class="col-md-12">
<div class="row">
@foreach($permissionsParent as $permissionsParentItem)
<div class="card boder-primary mb-3 col-md-12">
<div class="card-header">
<label>
<input type="checkbox" value="" class="checkbox_wapper">
</label>
Module {{ $permissionsParentItem->name }}
</div>
<div class="row">
@foreach($permissionsParentItem->permissionChildrent as $permissionChildrentItem)
<div class="card-body text-primary col-md-3">
<h5 class="card-title">
<label>
<input type="checkbox" name="permission_id[]"
{{$permissionsChecked->contains('id',$permissionChildrentItem->id) ?'checked' : ''}}
class="checkbox_childrent"
value="{{$permissionChildrentItem->id}}">
</label>
{{$permissionChildrentItem->name}}
</h5>
</div>
@endforeach
</div>
</div>
@endforeach
</div>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</div>
@endsection
-    Vào resoucer => admin => role => index.blade.php
<!-- Stored in resources/views/child.blade.php -->

@extends('layouts.admin')

@section('title')
<title>Trang ch</title>
@endsection

@section('css')

@endsection

@section('js')
<script src="{{asset('vendors/sweetAlert2/sweetalert2@11.js')}}"></script>
<script type="text/javascript" src="{{ asset('admins/main.js') }}"></script>
@endsection

@section('content')
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
@include('partials.content-header',['name'=>'Role', 'key'=>'Add'])
<!-- /.content-header -->

<!-- Main content -->
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<a href="{{route('roles.create')}}" class="btn btn-success float-right mr-2">add</a>
</div>
<div class="col-md-12">
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Tên vai trò</th>
<th scope="col">Mô tvai trò</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>

@foreach($roles as $role)
<tr>
<th scope="row">{{ $role->id }}</th>
<td>{{ $role->name }}</td>
<td>{{ $role->display_name }}</td>
<td>
<a href="{{route('roles.edit', ['id'=>$role->id])}}"
class="btn btn-default">Edit</a>
<a href=""
class="btn btn-danger action_delete"
data-url=
>Delete</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="col-md-12">
{{ $roles->links() }}
</div>

</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</div>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
@endsection

Xóa roles

-    Vào terminal chạy : 
php artisan make:migration add_column_deleted_at_table_roles --table=roles
-    Vào file 2021_07_26_113853_add_column_deleted_at_table_roles.php
<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class AddColumnDeletedAtTableRoles extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('roles', function (Blueprint $table) {
$table->softDeletes();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('roles', function (Blueprint $table) {
//
});
}
}
-    Vào terminal chạy : php artisan migrate
-    Vào web.php
<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/admin', 'AdminController@loginAdmin');
Route::post('/admin', 'AdminController@postloginAdmin');

Route::get('/home', function () {
return view('home');
});

Route::prefix('admin')->group(function () {
//category
Route::prefix('categories')->group(function () {
Route::get('/',[
'as'=> 'categories.index',
'uses' => 'CategoryController@index'
]);

Route::get('/create',[
'as'=> 'categories.create',
'uses' => 'CategoryController@create'
]);
Route::post('/store',[
'as'=> 'categories.store',
'uses' => 'CategoryController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'categories.edit',
'uses' => 'CategoryController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'categories.update',
'uses' => 'CategoryController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'categories.delete',
'uses' => 'CategoryController@delete'
]);
});
//menu
Route::prefix('menus')->group(function () {
Route::get('/',[
'as'=> 'menus.index',
'uses' => 'MenuController@index'
]);
Route::get('/create',[
'as'=> 'menus.create',
'uses' => 'MenuController@create'
]);
Route::post('/store',[
'as'=> 'menus.store',
'uses' => 'MenuController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'menus.edit',
'uses' => 'MenuController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'menus.update',
'uses' => 'MenuController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'menus.delete',
'uses' => 'MenuController@delete'
]);
});

//Product
Route::prefix('product')->group(function () {
Route::get('/',[
'as'=> 'product.index',
'uses' => 'AdminProductController@index'
]);
Route::get('/create',[
'as'=> 'product.create',
'uses' => 'AdminProductController@create'
]);
Route::post('/store',[
'as'=> 'product.store',
'uses' => 'AdminProductController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'product.edit',
'uses' => 'AdminProductController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'product.update',
'uses' => 'AdminProductController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'product.delete',
'uses' => 'AdminProductController@delete'
]);
});

//Slider
Route::prefix('slider')->group(function () {
Route::get('/',[
'as'=> 'slider.index',
'uses' => 'SliderAdminController@index'
]);
Route::get('/create',[
'as'=> 'slider.create',
'uses' => 'SliderAdminController@create'
]);
Route::post('/store',[
'as'=> 'slider.store',
'uses' => 'SliderAdminController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'slider.edit',
'uses' => 'SliderAdminController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'slider.update',
'uses' => 'SliderAdminController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'slider.delete',
'uses' => 'SliderAdminController@delete'
]);
});

//Settings
Route::prefix('settings')->group(function () {
Route::get('/',[
'as'=> 'settings.index',
'uses' => 'AdminSettingController@index'
]);
Route::get('/create',[
'as'=> 'settings.create',
'uses' => 'AdminSettingController@create'
]);
Route::post('/store',[
'as'=> 'settings.store',
'uses' => 'AdminSettingController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'settings.edit',
'uses' => 'AdminSettingController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'settings.update',
'uses' => 'AdminSettingController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'settings.delete',
'uses' => 'AdminSettingController@delete'
]);
});

//User
Route::prefix('users')->group(function () {
Route::get('/',[
'as'=> 'users.index',
'uses' => 'AdminUserController@index'
]);
Route::get('/create',[
'as'=> 'users.create',
'uses' => 'AdminUserController@create'
]);
Route::post('/store',[
'as'=> 'users.store',
'uses' => 'AdminUserController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'users.edit',
'uses' => 'AdminUserController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'users.update',
'uses' => 'AdminUserController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'users.delete',
'uses' => 'AdminUserController@delete'
]);
});

//Role
Route::prefix('roles')->group(function () {
Route::get('/',[
'as'=> 'roles.index',
'uses' => 'AdminRoleController@index'
]);
Route::get('/create',[
'as'=> 'roles.create',
'uses' => 'AdminRoleController@create'
]);
Route::post('/store',[
'as'=> 'roles.store',
'uses' => 'AdminRoleController@store'
]);
Route::get('/edit/{id}',[
'as'=> 'roles.edit',
'uses' => 'AdminRoleController@edit'
]);
Route::post('/update/{id}',[
'as'=> 'roles.update',
'uses' => 'AdminRoleController@update'
]);
Route::get('/delete/{id}',[
'as'=> 'roles.delete',
'uses' => 'AdminRoleController@delete'
])
;
});
});
-    Vào AdminUserController.php
<?php

namespace App\Http\Controllers;
use App\Permission;
use App\Role;
use App\Traits\DeleteModelTrait;
use Illuminate\Http\Request;

class AdminRoleController extends Controller
{
use DeleteModelTrait;
private $role;
private $permission;
public function __construct(Role $role,Permission $permission)
{
$this->role = $role;
$this->permission = $permission;
}
public function index()
{
$roles = $this->role->paginate(10);
return view('admin.role.index',compact('roles'));
}
public function create()
{
$permissionsParent = $this->permission->where('parent_id',0)->get();
return view('admin.role.add',compact('permissionsParent'));
}
public function store(Request $request)
{
$role = $this->role->create([
'name'=>$request->name,
'display_name'=>$request->display_name
]);

$role->permissions()->attach($request->permission_id);
return redirect()->route('roles.index');
}
public function edit($id)
{
$permissionsParent = $this->permission->where('parent_id',0)->get();
$role = $this->role->find($id);
$permissionsChecked = $role->permissions;
return view('admin.role.edit',compact('permissionsParent','role','permissionsChecked'));
}
public function update(Request $request,$id)
{
$role = $this->role->find($id);
$role->update([
'name'=>$request->name,
'display_name'=>$request->display_name
]);
$role->permissions()->sync($request->permission_id);
return redirect()->route('roles.index');
}
public function delete($id)
{
return $this->deleteModelTrait($id, $this->role);
}
}
-    Vào resoucer => admin => user =>  index.blade.php
<!-- Stored in resources/views/child.blade.php -->

@extends('layouts.admin')

@section('title')
<title>Trang ch</title>
@endsection

@section('css')
<link rel="stylesheet" href="{{ asset('admins/slider/index/index.css') }}">
@endsection

@section('js')
<script src="{{asset('vendors/sweetAlert2/sweetalert2@11.js')}}"></script>
<script type="text/javascript" src="{{ asset('admins/main.js') }}"></script>
@endsection

@section('content')
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
@include('partials.content-header',['name'=>'Role', 'key'=>'Add'])
<!-- /.content-header -->

<!-- Main content -->
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<a href="{{route('roles.create')}}" class="btn btn-success float-right mr-2">add</a>
</div>
<div class="col-md-12">
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Tên vai trò</th>
<th scope="col">Mô tvai trò</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>

@foreach($roles as $role)
<tr>
<th scope="row">{{ $role->id }}</th>
<td>{{ $role->name }}</td>
<td>{{ $role->display_name }}</td>
<td>
<a href="{{route('roles.edit', ['id'=>$role->id])}}"
class="btn btn-default">Edit</a>
<a href=""
class="btn btn-danger action_delete"
data-url="{{route('roles.delete',['id'=>$role->id])}}"
>Delete</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="col-md-12">
{{ $roles->links() }}
</div>
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</div>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
@endsection
-    Vào Role.php
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Role extends Model
{
use SoftDeletes;
protected $guarded = [];
public function permissions()
{
return $this->belongsToMany(Permission::class, 'permission_role','role_id','permission_id');
}
}

Đăng nhận xét

0 Nhận xét

myadcash