如何在Laravel PHP中验证下拉列表?

时间:2014-07-02 03:59:53

标签: php laravel

情况:

在模型下,我有一个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没有用。

我可以获得一些帮助吗?

感谢。

3 个答案:

答案 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

这可能是一个方便的要点。制定一条规则来验证编码器提供的任何字符串。