【问题标题】:Laravel 4 form validation with input values that are arraysLaravel 4 表单验证,输入值是数组
【发布时间】:2014-06-07 18:15:43
【问题描述】:

我的所有表单字段的名称中都有括号,以便按父级分组并将它们标识为重复元素,例如:fieldName_01[0][0]。当然,这使得常规使用 Laravel 的 Validator 类是不可能的,因为它会抛出一个错误,指出它不需要一个数组。这种命名约定是常见的做法,所以这不是一个罕见的问题。

我看到了其他几个类似的问题(HEREHERE),但我似乎无法理解它们(Laravel noob),或者我只是不知道如何/在哪里实施解决方案。在this answer 中,我将在哪里创建这个扩展类?如何告诉 Laravel 将其包含在我的项目中?

我的元素示例:

<div class="form-group col-sm-4'}}">
    {{ Form::label('fieldName_01[0][0]', 'My Element', array('class'=>'col-sm-3'))}}
    <div class="col-sm-7 col-md-6 recurringField">
    {{ Form::text('fieldName_01[0][0]', null, array(
        'class'=>'form-control input-md',
        'placeholder'=>'My Element',
        'data-element-code' => '',
        'data-recur-group' => 'fieldName_01',
        'id'=>'fieldName_01[0][0]',
        'data-fkey' => '0',
        'data-pkey' => '0'
    )) }}
    </div>
</div>

我的规则示例:

'fieldName_01'=>'required|alpha_num|between:2,255'

我如何调用验证器的示例:

$input = Input::all();
$validator = Validator::make($input, $this->rules);

【问题讨论】:

  • 您介意发布您的代码吗?
  • 请显示更多数据,以及您尝试过的内容。
  • @ElliotFehr,我不确定您在寻找什么,但我添加了一些示例代码。如果您想看其他内容,请告诉我。
  • @majidarif,除了我刚刚发布的新示例之外,我真的没有尝试太多。就像我在我的 OP 中所说的那样,我真的不知道从哪里开始。我会试试你的答案。
  • @jreed121 进展如何?我更新了我的答案。

标签: php validation laravel-4


【解决方案1】:

根据documentation

在处理带有“数组”输入的表单时,您可以使用点表示法 访问数组:

(警告未经测试的代码)

如果你有类似user[first_name] 的内容,那么:

'user.first_name' => 'required|between:2,28'

您可以通过以下方式处理任何错误:

$errors->first('user.first_name');

因此,对于您的问题,您可以验证fieldName_01[0][0],例如:

'fieldName_01.0.0' => 'required|alpha_num|between:2,255'

【讨论】:

  • 它没有用。不再抛出 php 错误,但验证器说该元素不存在 - 它可能不匹配规则名称“fieldName_01”与字段名称“fieldName_01.0.0”。当我使用dd(Input::all()) 查看输入的样子时,点被下划线替换。这些字段是动态的,有时它们的父级也是动态的,因此可以有 1-99 个(即“fieldName_01.99.99”),这就是我在数组中处理它们的原因。所以我试图避免像'fieldName_01.0.0' 这样指定我的规则,但有些像'fieldName_01' 这样的规则。谢谢顺便说一句
  • @jreed121 啊,我明白了。
【解决方案2】:
public function rules()
{
  $rules = [
'name' => 'required|max:255',
];

foreach($this->request->get('items') as $key => $val)
{
 $rules['items.'.$key] = 'required|max:10';
}

return $rules;

} 此代码用于此

【讨论】:

    猜你喜欢
    • 2017-11-13
    • 2014-09-20
    • 2021-12-07
    • 2017-01-06
    • 2013-05-02
    • 2013-10-18
    • 2019-02-23
    • 1970-01-01
    相关资源
    最近更新 更多