我在控制器Laravel默認驗證規則:如何在控制器Laravel中自定義驗證規則?
$validator = Validator::make($request->all(), [
'email' => 'required|email',
'phone' => 'required|numeric',
'code' => 'required|string|min:3|max:4',
'timezone' => 'required|numeric',
'country' => 'required|integer',
'agreement' => 'accepted'
]);
我想這一點,但不知道如何某些參數傳送內部功能:
public function boot()
{
Validator::extend('phone_unique', function($attribute, $value, $parameters) {
return substr($value, 0, 3) == '+44';
});
}
我怎樣才能程度上驗證通過我自己的規則?例如,我需要驗證的輸入concatination:
$phone = $request->code.' '.$request->phone
檢查後,如果$phone
是存在於數據庫
我想用這個方法:
> $validator->sometimes('phone', 'required|alpha_dash|max:25', function
> ($input) {
> if ((Auth::user()->phone == $input->phone)) {
> return false;
>
> } else {
>
> $t = User::where("phone", $input->phone)->get();
> return ($t->count() > 0) ? false : false;
>
> }
> });
它不會在所有情況下工作裏面有(True, False)
。
我增加了新的驗證nickname_unique
:
$validator = Validator::make($request->all(), [
'email' => 'required|email',
'code' => 'required|string|min:3|max:4',
'phone' => 'required|phone_unique',
'timezone' => 'required|numeric',
'country' => 'required|integer',
'nickname' => 'required|alpha_dash|max:25',
'agreement' => 'accepted'
], [
'phone_unique' => 'Phone already exists!',
'nickname_unique' => 'Nickname is busy!',
]);
它不工作,甚至沒有撥打以下previos驗證規則:
Validator::extend('nickname_unique', function ($attribute, $value, $parameters, $validator) {
dd("Here");
});
你能解釋一下,你需要哪種類型的驗證? –
我有兩個傳入參數:'code'和'phone'。我需要驗證兩個驗證功能,並請求數據庫比較代碼,電話與現有的字段在db – dsfsddfsdfsf
我已經發布了答案,請看看! –