2019年8月1日 星期四

Laravel 驗證訊息如何設定顯示自訂欄位名稱?



Laravel 的驗證功能蠻強大的,但一般的Example在寫時都沒有標示如何顯示自訂欄位名稱
導致在檢核欄位失敗要出現錯誤警訊時,只會顯示html 表單變數名稱,其實 Laravel的驗證模組就有包含這部份的設定了,只是在官網上似乎也沒有多做什麼說明,查了一下,使用上非常容易,只是大多的參考文件都是在強調如何設定自定的錯誤訊息,而非自定欄位名稱

好,那我們來看看要如何設定,如果使用$this->validate進行驗證,則範例如下:
$this->validate($request, [
                    'info' => 'required',
                    'data' => 'required',
                ], ['required' => '這是必填喔'],
                    [
                        'info' => '參考資訊',
                        'data' => '資料',
                    ]
                );


第一個參數傳入  request,  第二個傳入驗證欄位及驗證規則,第三個參數為自定義顯示錯誤,第四個參數就是自定義欄位名稱,就是這麼簡單,不過也花了不少時間去查
如果是使用Validator::make,可以使用setAttributeNames 進行設定,範例如下:

$niceNames = array(
    'info' => '參考資訊',
    'data' => '資料',
);

$validator = Validator::make(Input::all(), $rules);
$validator->setAttributeNames($niceNames);


參考連結:
https://segmentfault.com/q/1010000011839409
https://laravel.tw/docs/master/validation
http://blog.tonycube.com/2015/01/laravel-14-form.html
https://www.ccc.tc/article/laravel-validator-custom-crror-messages