[Laravel 5] 表單驗證 Form Requests and Controller Validation

本文 轉載自:http://blog.hsin.tw/2015/laravel-5-note09-form-requests-and-controller-validation/   php

文章解答了個人困惑很是感謝原做者  我把原來的繁體字 改爲了 簡體laravel

 

在後端做表單驗證 有兩種方法
第 1 種是使用 artisan 創建一個 request class 做驗證   (手冊裏寫的返回到Session 中 我不是很是理解 這篇文章解決勒沃的困惑)
第 2 種是直接在 controller 的 method 裏面做驗證後端

首先是第 1 種方式
首先使用 artisan 創建 request app

php artisan make:request CreateArticleRequest

這條命令會建立這個文件ui

app/Http/Requests/CreateArticleRequest.phpthis

class CreateArticleRequest extends Request {
 
    //驗證用戶權限  true 爲有權限   有興趣的能夠改爲false試試
    public function authorize()
    {
        return true;
    }
 
    // 這個地方填寫表單驗證規則
    public function rules()
    {
        return [
            'title' => 'required|min:3',
            'body' => 'required',
            'published_at' => 'required|date'
             
        ];
    }
 
}

 

若是有不符合規則的字段
他會輸出 error 並回到原表單頁
因此 view 這邊要再加上顯示 errorspa

resources/views/articles/create.blade.phpcode

    <!-- 這邊省略了前一節講的表單部份 -->
 
    <!-- 加上顯示 error 可再依照需求做更動 -->
    @if ($errors->any())
        <ul class="alert alert-danger">
        @foreach($errors->all() as $error)
            <li>{{ $error }}</li>
        @endforeach
        </ul>
    @endif

 

第二種方法 直接在 controller 裏作驗證orm

// 這行要加上
use Illuminate\Http\Request;
 
class ArticlesController extends Controller {
 
    public function store(Request $request)
    {
        // 驗證條件的寫法跟前面的同樣 有錯誤同樣會導回原表單頁並顯示錯誤
        $this->validate($request, ['title'=>'required']);        
 
        Article::create($request->all());
        return redirect('articles');
    }
 
}
相關文章
相關標籤/搜索