如何使用变量作为输入名称laravel验证输入?

时间:2015-04-14 12:39:52

标签: php laravel laravel-4 laravel-5

我正在尝试验证视图文件中的输入,如下所示

@foreach($persons as $person)              
  <div class="form-group{{ ($errors->has($person->id)) ? 'has error' : '' }}">
    <label for="{{$person->id}}" class="col-sm-4 control-label">{{$student->sname}}:</label>
    <div class="col-sm-8">
      <input id="{{$person->id}}" name="{{$person->id}}" type="text" class="form-control" value="Enter Age">
      @if($errors->has($person->id))
        {{ $errors->first($person->id)}}
      @endif
    </div>
  </div>
@endforeach

我想验证是否输入$person->id字段?我该怎么办?

如果此名称不变,我知道如何使用

进行验证
$validate = Validator::make(Input::all(), array(
    'sname' => 'required'          
)); 

但这里的输入名称是变量。那么我将如何验证这些输入?

1 个答案:

答案 0 :(得分:1)

这可能不是您想要使用变量输入名称下降的路径。在循环中添加输入时,将名称作为数组通常会更好。

如果无法完成,您可以做什么。这些值的名称将作为Input::all()的键重新出现,因此您可以执行这些操作并查询数据库以确定哪些输入实际上是用户ID。然后,您应该能够获取该ID列表,并将其键设置为您想要的规则,在本例中为required

我想出了这个,似乎对我有用。您可能需要将User模型更改为适合您的模型(Person模型可能?)。

$rules = User::select('id', DB::raw('\'required\' as rule'))->whereIn('id', array_keys(Input::all()))->lists('rule', 'id');

如果有另一个输入名称也恰好是用户的ID,这将会破坏。如果id只是数字,并且你不允许用户名只是数字,那么它可能会有效。