一覧や編集ページから削除ボタンを押すと、$idを渡したcontroller destroyメソッドでdelete()で削除する。画像の場合は、unlink。
削除完了メッセージは、Session::flashでsetして、遷移後のページで、@if(Session::has())で、メッセージを表示する方法がある。
edit.blade.php
{!! Form::open(['method'=>'DELETE', 'action'=>['AdminUsersController@destroy', $user->id]]) !!} {{ csrf_field()}} <div class="form-group"> {!! Form::submit('Delete User', ['class'=>'btn btn-danger']) !!} </div> {!! Form::close() !!}
AdminUsersController.php
public function destroy($id) { // User::findOrFail($id)->delete(); return redirect('/admin/users'); }
### flushの利用
use Illuminate\Support\Facades\Session; public function destroy($id) { // User::findOrFail($id)->delete(); Session::flash('deleted_user', 'The user has benn deleted'); return redirect('/admin/users'); }
index.blade.php
@if(Session::has('deleted_user')) <p class="bg-danger">{{session('deleted_user')}}</p> @endif
deleteする際には、belongsToでコネクトしている画像も削除する
public function destroy($id) { // $user = User::findOrFail($id); unlink(public_path() ."/". $user->photo->file); $user->delete(); Session::flash('deleted_user', 'The user has benn deleted'); return redirect('/admin/users'); }
User.php
public function isAdmin(){ if($this->role->name == "administrator" && $this->is_active == 1){ return true; } return false; }
### ログイン後のページ設定
app/Http/Auth/AuthController.php
protected $redirectTo = '/admin';
ユーザ削除の仕様は、要件定義によって変わってくると思います。その場合は、controllerで制御する。