我有动态生成的表单,我想在不同类型的字段中应用特定的验证规则。
我可以动态创建这种形式:
这样处理
@foreach( $form->fields as $field )
@if( $field->type == 'input' )
{!! Form::label($field->id, $field->title) !!}
{!! Form::text($field->id, null, ['class' => 'form-control', 'placeholder' => $field->title]) !!}
@elseif( $field->type == 'select' )
{!! Form::label($field->id, $field->title) !!}
{!! Form::select($field->id, $field->options->pluck('description','id')->toArray(), null, ['class' => 'form-control']) !!}
@elsif ...
@endif
@endforeach
我有这段代码
public function storeDynamic(Request $request)
{
foreach ($request->except('_token') as $field_id => $value)
{
$type = \App\Field::find( $field_id )->type;
switch ( $type )
{
case 'input':
//required
break;
case 'select':
//required|max:255
break;
...
}
}
//Store in DB
//Flash confirmation message
//Redirect
}
通常我会使用这种代码进行验证
$this->validate($request, [
'title' => 'required|max:145',
'description' => 'max:255'
]);
我确定laravel有一种神奇的方法可以做到这一点,但我无法在the documentation中找到任何内容。
那么可以通过我的循环逐个验证字段吗?
我在validateAttribute($attribute, $rule)
laravel/vendor/laravel/framework/src/Illuminate/Validation/Validator.php
功能
我认为这就是我的需要,但我不知道如何将其导入我的控制器。我尝试了很多像
这样的东西 \Illuminate\Validation\Validator::validateAttribute()
或
\Illuminate\Support\Facades\Validator::validateAttribute()
但这不起作用。