情况:
在模型下,我有一个user.php
来处理有关将用户添加到网站的所有验证。
这是代码的一部分:
public static $add_rules = array(
'last_name' => 'required',
'first_name' => 'required',
'email' => 'required|unique:users,email',
'username' => 'required|alpha_num|min: 5|unique:users,username',
'password' => 'required|min: 4|same:password_confirmation',
'password_confirmation' => 'required',
'user_role' => 'required|not_in:-- Choose User Type --'
);
user_role
是下拉列表的ID,如下所示:
<select name="user_type_id" class="form-control" id="user_role">
<option value="0">-- Choose User Type --</option>
@if(Session::get("user_type") == "superuser")
{
@foreach($user_types as $ut)
<option value="{{$ut['id']}}">
{{ ucwords($ut["user_type"]) }}
</option>
@endforeach
}
@else{
<option value="Regular">Regular</option>
}@endif
</select>
基本上,在那里发生的事情是下拉列表中填充了用户类型,无论它们是什么。但它始终具有-- Choose User Type --
的第一个“选项”。
问题:
问题是,用户可以使用该选项并添加用户。我有一个javascript代码阻止这个并在弹出窗口中输出错误消息,但它很难看,并且与网站的其他错误消息不一致。
所以我把它添加到规则中。需要对其进行验证,使其仅接受默认-- Choose User Type --
选项以外的任何内容。
我尝试过的事情:
不幸的是, not_in
没有用。
我可以获得一些帮助吗?
感谢。
答案 0 :(得分:10)
您没有以正确的方式使用not_in
。您应该传递不允许的值,而不是这些值的表示。
'user_role' => 'required|not_in:0'
答案 1 :(得分:4)
您有选择名为&#34; user_type_id&#34;但您正在尝试验证名为&#34; user_role&#34;的字段。
答案 2 :(得分:0)
我认为这种情况需要使用:Validator :: extend()
http://laravel.com/docs/validation#custom-validation-rules
这可能是一个方便的要点。制定一条规则来验证编码器提供的任何字符串。