Tạo form Thêm user
- 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'
]);
});
});
- Vào AdminUserController.php
<?php
namespace App\Http\Controllers;
use App\Role;
use App\User;
use Illuminate\Http\Request;
class AdminUserController extends Controller
{
private $user;
private $role;
public function __construct(User $user,Role $role)
{
$this->user = $user;
$this->role = $role;
}
public function index()
{
$users = $this->user->paginate(10);
return view('admin.user.index',compact('users'));
}
public function create()
{
$roles = $this->role->all();
return view('admin.user.add',compact('roles'));
}
}
- Vào resoucer => admin => user => tạo file add.blade.php
<!-- Stored in resources/views/child.blade.php -->
@extends('layouts.admin')
@section('title')
<title>Trang chủ</title>
@endsection
@section('css')
<link href="{{ asset('vendors/select2/select2.min.css') }}" rel="stylesheet" />
<link href="{{ asset('admins/user/add/add.css') }}" rel="stylesheet" />
@endsection
@section('js')
<script src="{{ asset('vendors/select2/select2.min.js') }}"></script>
<script src="{{ asset('admins/user/add/add.js') }}"></script>
@endsection
@section('content')
<div class="content-wrapper">
@include('partials.content-header',['name'=>'User', 'key'=>'Add'])
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<form action="" method="post" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label>Tên </label>
<input class="form-control"
name="name"
placeholder="Nhập tên"
value="{{old('name')}}"
>
</div>
<div class="form-group">
<label>Email</label>
<input class="form-control"
name="email"
placeholder="Nhập email"
value="{{old('email')}}"
>
</div>
<div class="form-group">
<label>Password</label>
<input class="form-control"
name="password"
placeholder="Nhập password"
>
<div class="form-group">
<label>Chọn vai trò</label>
<select name="role_id[]" class="form-control select2_init" multiple>
<option value=""></option>
@foreach($roles as $role)
<option value="{{$role->id}}">{{$role->name}}</option>
@endforeach
</select>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
- 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'=>'User', 'key'=>'list'])
<!-- /.content-header -->
<!-- Main content -->
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<a href="{{route('users.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</th>
<th scope="col">Email</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<th scope="row">{{ $user->id }}</th>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
<td>
<a href=""
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">
{{ $users->links() }}
</div>
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</div>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
@endsection
- Vào public=> admins => user => tạo file add.css
.select2-selection__choice {
background-color: #0c525d !important;
}
- Vào public=> admins => user => tạo file add.js
$(function () {
$('.select2_init').select2({
'placeholder': 'Chọn vai trò'
})
})
- Vào trình duyệt:
Thêm user
- 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'
]);
});
});
- Vào AdminUserController.php
<?php
namespace App\Http\Controllers;
use App\Role;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
class AdminUserController extends Controller
{
private $user;
private $role;
public function __construct(User $user,Role $role)
{
$this->user = $user;
$this->role = $role;
}
public function index()
{
$users = $this->user->paginate(10);
return view('admin.user.index',compact('users'));
}
public function create()
{
$roles = $this->role->all();
return view('admin.user.add',compact('roles'));
}
public function store(Request $request)
{
$user = $this->user->create([
'name' => $request->name,
'email'=> $request->email,
'password'=>Hash::make($request->password)
]);
$user->roles()->attach($request->role_id);
return redirect()->route('users.index');
}
}
- Vào User.php
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function roles()
{
return $this->belongsToMany(Role::class,'role_user','user_id','role_id');
}
}
- Vào resoucer => admin => user => tạo file add.blade.php
<!-- Stored in resources/views/child.blade.php -->
@extends('layouts.admin')
@section('title')
<title>Trang chủ</title>
@endsection
@section('css')
<link href="{{ asset('vendors/select2/select2.min.css') }}" rel="stylesheet" />
<link href="{{ asset('admins/user/add/add.css') }}" rel="stylesheet" />
@endsection
@section('js')
<script src="{{ asset('vendors/select2/select2.min.js') }}"></script>
<script src="{{ asset('admins/user/add/add.js') }}"></script>
@endsection
@section('content')
<div class="content-wrapper">
@include('partials.content-header',['name'=>'User', 'key'=>'Add'])
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<form action="{{ route('users.store') }}" method="post" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label>Tên </label>
<input type="text"
class="form-control"
name="name"
placeholder="Nhập tên"
value="{{old('name')}}"
>
</div>
<div class="form-group">
<label>Email</label>
<input type="text"
class="form-control"
name="email"
placeholder="Nhập email"
value="{{old('email')}}"
>
</div>
<div class="form-group">
<label>Password</label>
<input type="text"
class="form-control"
name="password"
placeholder="Nhập password"
>
<div class="form-group">
<label>Chọn vai trò</label>
<select name="role_id[]" class="form-control select2_init" multiple>
<option value=""></option>
@foreach($roles as $role)
<option value="{{$role->id}}">{{$role->name}}</option>
@endforeach
</select>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
Hiển thị form cập nhật user
- 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'
]);
});
});
- Vào AdminUserController.php
<?php
namespace App\Http\Controllers;
use App\Role;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
class AdminUserController extends Controller
{
private $user;
private $role;
public function __construct(User $user,Role $role)
{
$this->user = $user;
$this->role = $role;
}
public function index()
{
$users = $this->user->paginate(10);
return view('admin.user.index',compact('users'));
}
public function create()
{
$roles = $this->role->all();
return view('admin.user.add',compact('roles'));
}
public function store(Request $request)
{
try {
DB::beginTransaction();
$user = $this->user->create([
'name' => $request->name,
'email'=> $request->email,
'password'=>Hash::make($request->password)
]);
$user->roles()->attach($request->role_id);
DB::commit();
return redirect()->route('users.index');
}catch (\Exception $exception){
DB::rollBack();
log::error('Message: ' .$exception->getMessage().' --- Line : '.$exception->getLine());
}
}
public function edit($id)
{
$roles = $this->role->all();
$user = $this->user->find($id);
$rolesOfUser = $user->roles;
return view('admin.user.edit',compact('roles','user','rolesOfUser'));
}
}
- 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'=>'User', 'key'=>'list'])
<!-- /.content-header -->
<!-- Main content -->
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<a href="{{route('users.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</th>
<th scope="col">Email</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<th scope="row">{{ $user->id }}</th>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
<td>
<a href="{{route('users.edit',['id'=>$user->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">
{{ $users->links() }}
</div>
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</div>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
@endsection
- Vào resoucer => admin => user => tạo file edit.blade.php
<!-- Stored in resources/views/child.blade.php -->
@extends('layouts.admin')
@section('title')
<title>Trang chủ</title>
@endsection
@section('css')
<link href="{{ asset('vendors/select2/select2.min.css') }}" rel="stylesheet" />
<link href="{{ asset('admins/user/add/add.css') }}" rel="stylesheet" />
@endsection
@section('js')
<script src="{{ asset('vendors/select2/select2.min.js') }}"></script>
<script src="{{ asset('admins/user/add/add.js') }}"></script>
@endsection
@section('content')
<div class="content-wrapper">
@include('partials.content-header',['name'=>'User', 'key'=>'Edit'])
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<form action="" method="post" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label>Tên </label>
<input type="text"
class="form-control"
name="name"
placeholder="Nhập tên"
value="{{$user->name}}"
>
</div>
<div class="form-group">
<label>Email</label>
<input type="text"
class="form-control"
name="email"
placeholder="Nhập email"
value="{{$user->email}}"
>
</div>
<div class="form-group">
<label>Password</label>
<input type="password"
class="form-control"
name="password"
placeholder="Nhập password"
>
<div class="form-group">
<label>Chọn vai trò</label>
<select name="role_id[]" class="form-control select2_init" multiple>
<option value=""></option>
@foreach($roles as $role)
<option
{{$rolesOfUser->contains('id',$role->id)?'selected':'' }}
value="{{$role->id}}">{{$role->name}}</option>
@endforeach
</select>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
Cập nhật form user
- 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'
]);
});
});
- Vào AdminUserController.php
<?php
namespace App\Http\Controllers;
use App\Role;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
class AdminUserController extends Controller
{
private $user;
private $role;
public function __construct(User $user,Role $role)
{
$this->user = $user;
$this->role = $role;
}
public function index()
{
$users = $this->user->paginate(10);
return view('admin.user.index',compact('users'));
}
public function create()
{
$roles = $this->role->all();
return view('admin.user.add',compact('roles'));
}
public function store(Request $request)
{
try {
DB::beginTransaction();
$user = $this->user->create([
'name' => $request->name,
'email'=> $request->email,
'password'=>Hash::make($request->password)
]);
$user->roles()->attach($request->role_id);
DB::commit();
return redirect()->route('users.index');
}catch (\Exception $exception){
DB::rollBack();
log::error('Message: ' .$exception->getMessage().' --- Line : '.$exception->getLine());
}
}
public function edit($id)
{
$roles = $this->role->all();
$user = $this->user->find($id);
$rolesOfUser = $user->roles;
return view('admin.user.edit',compact('roles','user','rolesOfUser'));
}
public function update(Request $request,$id)
{
try {
DB::beginTransaction();
$this->user->find($id)->update([
'name' => $request->name,
'email'=> $request->email,
'password'=>Hash::make($request->password)
]);
$user = $this->user->find($id);
$user->roles()->sync($request->role_id);
DB::commit();
return redirect()->route('users.index');
}catch (\Exception $exception){
DB::rollBack();
log::error('Message: ' .$exception->getMessage().' --- Line : '.$exception->getLine());
}
}
}
- Vào resoucer => admin => user => edit.blade.php
<!-- Stored in resources/views/child.blade.php -->
@extends('layouts.admin')
@section('title')
<title>Trang chủ</title>
@endsection
@section('css')
<link href="{{ asset('vendors/select2/select2.min.css') }}" rel="stylesheet" />
<link href="{{ asset('admins/user/add/add.css') }}" rel="stylesheet" />
@endsection
@section('js')
<script src="{{ asset('vendors/select2/select2.min.js') }}"></script>
<script src="{{ asset('admins/user/add/add.js') }}"></script>
@endsection
@section('content')
<div class="content-wrapper">
@include('partials.content-header',['name'=>'User', 'key'=>'Edit'])
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-6">
<form action="{{ route('users.update',['id'=>$user->id]) }}" method="post" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label>Tên </label>
<input type="text"
class="form-control"
name="name"
placeholder="Nhập tên"
value="{{$user->name}}"
>
</div>
<div class="form-group">
<label>Email</label>
<input type="text"
class="form-control"
name="email"
placeholder="Nhập email"
value="{{$user->email}}"
>
</div>
<div class="form-group">
<label>Password</label>
<input type="password"
class="form-control"
name="password"
placeholder="Nhập password"
>
<div class="form-group">
<label>Chọn vai trò</label>
<select name="role_id[]" class="form-control select2_init" multiple>
<option value=""></option>
@foreach($roles as $role)
<option
{{$rolesOfUser->contains('id',$role->id)?'selected':'' }}
value="{{$role->id}}">{{$role->name}}</option>
@endforeach
</select>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
Xóa user
- Vào terminal chạy :
php artisan make:migration add_column_deleted_at_table_users --table=users
- Vào file 2021_07_25_114100_add_column_deleted_at_table_users.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddColumnDeletedAtTableUsers extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', 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'
]);
});
});
- Vào AdminUserController.php
<?php
namespace App\Http\Controllers;
use App\Role;
use App\Traits\DeleteModelTrait;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Log;
class AdminUserController extends Controller
{
use DeleteModelTrait;
private $user;
private $role;
public function __construct(User $user,Role $role)
{
$this->user = $user;
$this->role = $role;
}
public function index()
{
$users = $this->user->paginate(10);
return view('admin.user.index',compact('users'));
}
public function create()
{
$roles = $this->role->all();
return view('admin.user.add',compact('roles'));
}
public function store(Request $request)
{
try {
DB::beginTransaction();
$user = $this->user->create([
'name' => $request->name,
'email'=> $request->email,
'password'=>Hash::make($request->password)
]);
$user->roles()->attach($request->role_id);
DB::commit();
return redirect()->route('users.index');
}catch (\Exception $exception){
DB::rollBack();
log::error('Message: ' .$exception->getMessage().' --- Line : '.$exception->getLine());
}
}
public function edit($id)
{
$roles = $this->role->all();
$user = $this->user->find($id);
$rolesOfUser = $user->roles;
return view('admin.user.edit',compact('roles','user','rolesOfUser'));
}
public function update(Request $request,$id)
{
try {
DB::beginTransaction();
$this->user->find($id)->update([
'name' => $request->name,
'email'=> $request->email,
'password'=>Hash::make($request->password)
]);
$user = $this->user->find($id);
$user->roles()->sync($request->role_id);
DB::commit();
return redirect()->route('users.index');
}catch (\Exception $exception){
DB::rollBack();
log::error('Message: ' .$exception->getMessage().' --- Line : '.$exception->getLine());
}
}
public function delete($id)
{
return $this->deleteModelTrait($id, $this->user);
}
}
- 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'=>'User', 'key'=>'list'])
<!-- /.content-header -->
<!-- Main content -->
<div class="content">
<div class="container-fluid">
<div class="row">
<div class="col-md-12">
<a href="{{route('users.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</th>
<th scope="col">Email</th>
<th scope="col">Action</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<th scope="row">{{ $user->id }}</th>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
<td>
<a href="{{route('users.edit',['id'=>$user->id])}}"
class="btn btn-default">Edit</a>
<a href=""
class="btn btn-danger action_delete"
data-url="{{route('users.delete',['id'=>$user->id])}}">Delete</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="col-md-12">
{{ $users->links() }}
</div>
</div>
<!-- /.row -->
</div>
<!-- /.container-fluid -->
</div>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
@endsection
- Vào User.php
<?php
namespace App;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable,SoftDeletes;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function roles()
{
return $this->belongsToMany(Role::class,'role_user','user_id','role_id');
}
}

0 Nhận xét