
Application 2
上傳功能
- 新增 enctype (
'type'=>true
){!! Form::open(['method'=>'POST', 'action'=>'AdminUsersController@store', 'files'=>true]) !!}
- 新增 migration
php artisan make:migration add_photo_id_to_users --table=users
- 修改 add_photo_id_to_users_table
1 | public function up() |
- 在 Create Page 新增 upload 欄位
1 | <div class="form-group"> |
- 在 User model 讓欄位可寫入
protected $fillable = ['name', 'email', 'password', 'role_id', 'is_active', 'photo_id']
- 修改 AdminUsersController 的 store function
1 | public function store(UsersRequest $request) |
- 新增 Model 和 migration
php artisan make:model Photo -m
- 在 create_photos_table 新增欄位
$table->string('file');
- 在 Photo model 讓 file 可寫入
protected $fillable = ['file'];
- 在 User model 新增 relationship
public function photo(){return $this->belongsTo('App\Photo');}
新增連結
- 在 layouts/admin.blade.php 新增 route link
1 | <li> |
- 修改 create page
1 | <div class="form-group"> |
- 在 AdminUsersController 的 store function 新增
1 | if($file = $request->file('photo_id')) { |
- 繼續在 store function 將密碼加密後儲存所有檔案
1 | $input['password'] = bcrypt($request->password); |
- 新增路徑資訊到 Photo model
1 | protected $uploads = '/images/'; |
- 新增 photo 到 User index page
<td><img height="50" src="{{ "{{$user->photo ? $user->photo->file : 'no user photo'" }}}}" alt=""></td>
Edit page
- 修改 AdminUsersController 的 edit function (傳送 role 的資訊)
1 | public function edit($id) |
- 修改 edit page (先從 create page 複製頁面,將 form 連結 model)
1 | @extends('layouts.admin') |
- 在 edit page 新增圖片
1 | <div class="col-sm-3"> |
- 將 users/index view 的圖片改成若無圖片,顯示 sample 圖片
<td><img height="50" src="{{ "{{$user->photo ? $user->photo->file : 'http://placehold.it/400x400'" }}}}" alt=""></td>
- 將 AdminUsersController 的 update function 改用 UsersRequest 來做 validation
public function update(UsersRequest $request, $id){}
- 修改 AdminUsersController 的 update function
1 | public function update(UsersRequest $request, $id) |
- 新增新的 Request
php artisan make:request UsersEditRequest
- 修改 Request
public function authorize(){return true;}
1 | public function rules() |
- 修改 AdminUsersController 的 create 和 update function
1 | if(trim($request->password) == ''){ |
- Mutator
1 | public function setPasswordAttribute($password){ |
Middleware
- 新增一個 middleware
php artisan make:middleware Admin
- 在 app\kernel.php 註冊 middleware (routemiddleware)
'admin' => \App\Http\Middleware\Admin::class,
- 新增 404 頁面 resources\views\errors\404.blade.php
- 在 User model 新增一個 function
1 | public function isAdmin(){ |
- 修改 Admin middleware
1 | public function handle($request, Closure $next) |
Delete User
- 新增 form 到 Users/edit view
1 | {!! Form::open(['method'=>'DELETE', 'action'=>['AdminUsersController@destroy', $user->id]]) !!} |
- 在 AdminUsersController 新增 destroy function
1 | public function destroy($id) |
- 將讀取到的 session 顯示在 Users/index view
1 | @if(Session::has('deleted_user')) |
在目錄刪除圖片
- 修改 destroy function
1 | public function destroy($id) |