我遇到了问题,我想知道它是否是一个错误或者其他没有实现的东西,因为它非常简单。
我创建了一个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();
}