【问题标题】:How to validate inputs with variables as input name laravel?如何使用变量作为输入名称 laravel 验证输入?
【发布时间】:2015-04-14 12:39:52
【问题描述】:

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

@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-&gt;id 字段是否输入?我该怎么办?

如果这个名字是常数,我知道如何使用验证

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

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

【问题讨论】:

    标签: php laravel laravel-4 laravel-5


    【解决方案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 只是数字并且您不允许用户名只是数字,那么它可能会成功。

    【讨论】:

      猜你喜欢
      • 2014-11-05
      • 1970-01-01
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多