Laravel 4 - 单选按钮在使用“有时|必需”规则时不会验证

时间:2014-07-25 06:42:35

标签: php forms validation laravel

我遇到了问题,我想知道它是否是一个错误或者其他没有实现的东西,因为它非常简单。

我创建了一个3步表单,我正在使用有时|必需(管道验证规则),除了复选框和单选按钮之外,其他所有内容都会在表单提交中出现时被忽略,但它们会被忽略,但我仍然需要它们需要。如果我取出有时规则,那么即使该字段处于步骤3的形式,显然该字段在步骤1中是必需的。再次,它是一个3步形式,所以我需要收音机和复选框,而不是每一步,只需要他们所处的步骤。

是否有另一种方法来编写自定义验证,有时需要复选框和单选按钮而不使用有时验证规则? (我正在考虑使用不同的验证方法可能会有所帮助)

我的观点

@foreach($rooms as $room)
    {{ HTML::image($room->pic1, "the pic alt", array('width'=>'100', 'class'=> 'img-responsive')) }}

    {{ Form::radio('chosen_room', $room->id, false, array('class'=>'roomradio')) }}
    <h5>{{ $room->room_name }}</h5>  
@endforeach

我的规则模型

class Reservation extends Eloquent {

protected $fillable = array(
'checkin', 'checkout', 'number_of_adults', 'number_of_kids_b6', 'number_of_kids6_15', 'chosen_room', 'first_name', 'last_name', 'email', 'termsAgree');

public static $rules = array(

    'checkin'=>'sometimes|required|date_format:"Y-m-d"',
    'checkout'=>'sometimes|required|date_format:"Y-m-d"',
    'number_of_adults'=>'sometimes|required|integer',
    'number_of_kids_b6'=>'integer',
    'number_of_kids6_15'=>'integer',
    'chosen_room'=>'sometimes|required|integer|in:15,16,17,18,19,20,21',
    'first_name'=> 'sometimes|required|alpha',
    'last_name'=> 'sometimes|required|alpha',
    'email' => 'email|sometimes|required',
    'termsAgree' => 'sometimes|accepted'
);

public function category(){
    return $this->belongsTo('Room');
}

}

我的控制器

  public function step2() {

  $validator = Validator::make($data = Input::all(), Reservation::$rules);

  if ($validator->passes())
  {
    $room_id = intval(Input::get('chosen_room'));

    Session::Put('chosenroom', $room_id);

    // do some other stuff

    return View::make('reservations.step3');
  }

return Redirect::back()
        ->withErrors($validator)
        ->with('message', 'Something went wrong, please review your input')
        ->withInput();
}

0 个答案:

没有答案