arn*_*ins 4 php validation model laravel
比方说,我在Laravel中有一个User模型,如下所示:
class User extends Eloquent implements UserInterface, RemindableInterface {
public static $rules = array(
'email' => 'required|email',
'password' => 'required|min:8|confirmed',
'password_confirmation' => 'required|min:8'
);
...
}
Run Code Online (Sandbox Code Playgroud)
存储在模型中的规则将重复用于登录和注册表单,但是当不需要密码确认(例如登录表单)时会出现问题.并且可能存在许多应该改变规则的情况.
那么,有没有任何纯方法如何修改Laravel中不同情况的模型存储验证规则?我是否必须重新组织我的规则存储方法?
谢谢!
Ana*_*nam 12
您可以在需要时动态添加规则.
例如:
如果我是对的,那么password_confirmation在注册用户和更新密码时只需要规则.因此,在您的模型中,不要添加password_confirmation规则.
public static $rules = array(
'email' => 'required|email',
'password' => 'required|min:8|confirmed'
}
Run Code Online (Sandbox Code Playgroud)
如何动态添加规则:
要注册用户,该password_confirmation字段是必填字段.因此,您可以从控制器中添加如下规则:
$rules = User::$rules;
$rules['password_confirmation'] = 'required|min:8';
Run Code Online (Sandbox Code Playgroud)
有时您可能需要根据用户输入添加规则.
例如:
如果用户选择Australia国家/地区,则还必须选择州.
$v = Validator::make($data, $rules ));
$v->sometimes('state', 'required', function($input)
{
return $input->country == 'Australia';
});
Run Code Online (Sandbox Code Playgroud)
小智 11
游戏的后期,但根据Laravel文档,您可以使用"有时"规则.
http://laravel.com/docs/validation
简而言之:在某些情况下,只有在输入数组中存在该字段时,您可能希望对字段运行验证检查.要快速完成此操作,请将有时规则添加到规则列表中:
'password_confirmation' => 'sometimes|required|min:8|confirmed'
Run Code Online (Sandbox Code Playgroud)
小智 10
我这样做.
在模型中:
public static $rules = [
'create' => [
'first_name' => 'min:3',
'last_name' => 'min:3',
'email' => 'required|email|unique:users',
'password' => 'required|min:5|confirmed'
],
'edit' => [
'first_name' => 'other',
'last_name' => 'other',
'email' => 'other',
'password' => 'other|min:5'
]
];
Run Code Online (Sandbox Code Playgroud)
在控制器中:
$validator = Validator::make( $input, User::$rules['edit'] ); # Or User::$rules['create']
if ( $validator->fails() ) { code }
Run Code Online (Sandbox Code Playgroud)