2017-03-20 463 views
0

自定義錯誤消息不適用於自定義規則,請參閱變量$ messages uniqueTeamNameForcomp。Laravel(5.3.24+)驗證:自定義驗證與自定義錯誤消息

自定義規則很好,規則的自定義消息:所需的也很好。

當它應該讀取錯誤消息「This name already exists for this competition」時,針對規則uniqueTeamNameForComp顯示的錯誤消息是「unique_team_name_for_comp」。

控制器:

​​

服務提供商:

public function boot() 
{ 
    Validator::extend('uniqueTeamNameForComp', function ($attribute, $value, $parameters, $validator) { 
     $competitionId = $parameters[0]; 

     return count(Tteam::where("comp_id", "=", $competitionId)->whereName($value)->get()) == 0; 
    }); 
} 
+0

爲什麼不直接使用'獨特:tteams,名稱,NULL,ID,comp_id,'$請求 - > compzid'這將需要的姓名成爲一個comp_id等於'$請求記錄唯一的。 - > compzid'並忽略ID爲空的記錄(最後一部分僅僅是因爲[唯一驗證](https://laravel.com/docs/5.1/validation#rule-unique)的參數順序) – jfadich

回答

0

你從Laravel看到的輸出實際上是給你一個提示。它期望自定義消息被蛇情況下的驗證規則所關鍵,而不是駱駝情況。

$messages = array(
    'unique_team_name_for_comp' => 'This name already exist for this competition', 
    'required'     => 'this works' 
);