[英]Laravel custom validation - get parameters
我想獲取驗證規則中傳遞的參數。
對於我創建的某些驗證規則,我可以從驗證規則中獲取參數,但對於少數規則,它無法獲取參數。
在模型中,我使用以下代碼:
public static $rules_sponsor_event_check = array(
'sponsor_id' => 'required',
'event_id' => 'required|event_sponsor:sponsor_id'
);
在 ValidatorServiceProvider 中,我使用以下代碼:
Validator::extend('event_sponsor', function ($attribute, $value, $parameters) {
$sponsor_id = Input::get($parameters[0]);
$event_sponsor = EventSponsor::whereIdAndEventId($sponsor_id, $value)->count();
if ($event_sponsor == 0) {
return false;
} else {
return true;
}
});
但是在這里我無法使用以下內容獲取贊助商 ID:
$sponsor_id = Input::get($parameters[0]);
作為第四個,整個驗證器被傳遞給你用extends
定義的閉包。 您可以使用它來獲取所有經過驗證的數據:
Validator::extend('event_sponsor', function ($attribute, $value, $parameters, $validator) {
$sponsor_id = array_get($validator->getData(), $parameters[0], null);
// ...
});
順便說一下,如果傳遞的輸入名稱不存在,我在這里使用array_get
來避免任何錯誤。
http://laravel.com/docs/5.0/validation#custom-validation-rules
自定義驗證器閉包接收三個參數:被驗證的 $attribute 的名稱、屬性的 $value 和傳遞給規則的 $parameters 數組。
為什么Input::get( $parameters );
然后? 你應該檢查 $parameters 內容。
編輯。 好的,我知道你想做什么。 如果您嘗試獲取的值未提交,您將不會從輸入中讀取任何內容。 看看
dd(Input::all());
然后你會發現
sponsor_id=Input::get($parameters[0]);
在提交sponsor_id的地方工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.