我正在使用默认的Laravel 5用户注册资料,该资料使用registrar.php文件app / Services / Registrar.php
我需要执行一个自定义验证规则来检查会话中是否存储了一些东西,否则用户将无法注册。
我尝试创建自己的验证规则,但似乎没有被调用。我究竟做错了什么?
<?php namespace App\Services;
use App\User;
use Event;
use Validator;
use Illuminate\Contracts\Auth\Registrar as RegistrarContract;
use App\Events\UserRegistered;
use Session;
class Registrar implements RegistrarContract {
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
public function validator(array $data)
{
Validator::extend('required_images', function($attribute, $value, $parameters)
{
die("rule called");
});
return Validator::make($data, [
'first_name' => 'required_images|required|max:255',
'last_name' => 'required|max:255',
'discount_code' => 'max:255',
'register_email' => 'required|email|confirmed|max:255|unique:users,email',
'register_password' => 'required|confirmed|min:6|max:60'
]);
}
}
另外,我刚刚将规则required_images附加到first_name字段,但是由于它实际上与注册表单中的字段无关,是否有更好的方法来触发它?
如果仔细看一下validator()
函数,您会发现实际上有一条return
语句:
public function validator(array $data)
{
return Validator::make($data, [
// ^^^
'first_name' => 'required_images|required|max:255',
'last_name' => 'required|max:255',
// ...
这意味着您的规则永远不会得到注册。您应该先这样做:
public function validator(array $data)
{
Validator::extend('required_images', function($attribute, $value, $parameters)
{
die("rule called");
});
return Validator::make($data, [
'first_name' => 'required_images|required|max:255',
'last_name' => 'required|max:255',
'discount_code' => 'max:255',
'register_email' => 'required|email|confirmed|max:255|unique:users,email',
'register_password' => 'required|confirmed|min:6|max:60'
]);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句