Laravel 5 基礎(十一)- 表單驗證

WBOY
發布: 2016-08-08 09:26:47
原創
741 人瀏覽過

在建立一個文章的時候,如果你什麼都不輸入直接提交,ok,你獲得了一個空的文章,沒有任何錯誤提示,這是不對的。在命令列下執行 php artisan 可以看到一個選項 make:request,新建一個form request類別。在命令列執行

<code>php artisan make:request CreateArticleRequest</code>
登入後複製

產生的檔案在 app/http/requests 目錄下。在文件中我們可以看到兩個方法:

<code>	public function authorize()
	{
		return false;
	}
	
	public function rules()
	{
		return [
			//
		];
	}</code>
登入後複製

authorize 表示用戶在提交表單的時候是否需要是認證用戶,我們不需要認證,回傳 true。 rules是我們的規則方法。讓我們修改這個方法:

<code>	public function authorize()
	{
		//修改为 true,表示不需要认证,或者是通过认证
		return true;
	}
	
	public function rules()
	{
		return [
			'title' => 'required|min:3',
        'body' => 'required',
        'published_at' => 'required|date'
		];
	}</code>
登入後複製

其他的限制可以插看 laravel 的文件。上面的約束表示 title 是必須輸入的,最少3個字符,​​body 是必須的,published_at 是必須的而且是日期。

在視圖中,我們總是可以存取 $errors 變數來判斷我們是否有錯誤,修改視圖

<code>
    @if ($errors->any())
        <ul class="alert alert-danger">
            @foreach($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    @endif
    
    {{--使用我们添加的 illuminate\html 开源库--}}
    {!! Form::open(['url' => 'articles']) !!}</code>
登入後複製

修改控制器,引入我們的 Request 類別。

<code>    public function store(Requests\CreateArticleRequest $request) {
        Article::create($request->all());

        return redirect('articles');
    }</code>
登入後複製

再次提交表單,什麼都不填,可以看到錯誤訊息。

修改提示訊息變成中文

顯示的是英文的錯誤訊息,實際上laravel考慮到了國際化的問題,首先修改 config/app.php

<code>	'locale' => 'zh',</code>
登入後複製

將 locale 語言設定為中文,然後再 resources/lang 下面新建資料夾 zh, 拷貝 resources/lang/en/validation.php 檔案到 zh 目錄下,修改:

<code>	"min"                  => [
		"numeric" => "The :attribute must be at least :min.",
		"file"    => "The :attribute must be at least :min kilobytes.",
		"string"  => ":attribute 至少要包含 :min 字符。",
		"array"   => "The :attribute must have at least :min items.",
	],
	
	"required"             => ":attribute 必须填写。",</code>
登入後複製
其他的可以自行翻譯。再次提交空白表單,錯誤訊息為中文了。而且

min:3 的判斷也為最少3個中文。

--

laravel 也在控制器中整合了

validate 方法,換句話說,我們不一定要產生 request 類,這些工作我們可以直接在控制器中完成。

修改控制器:

<code>	 //注意 Request 的命名空间,不要弄错了
    public function store(\Illuminate\Http\Request $request) {

        $this->validate($request, [
            'title' => 'required|min:3',
            'body' => 'required',
            'published_at' => 'required|date'
        ]);

        Article::create($request->all());

        return redirect('articles');
    }</code>
登入後複製
結果相同,這樣可以更快速的完成簡單的驗證。

以上就介紹了Laravel 5 基礎(十一)- 表單驗證,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板