【问题标题】:Laravel validate array inputLaravel 验证数组输入
【发布时间】:2014-09-20 20:38:23
【问题描述】:

我正在尝试构建一些看起来像的自定义网格表单

form.blade.php
<table>
   <tr>
      <td>
        {{ Form::text('name[]', null, array('placeholder' => 'name') }}
      </td>
   </tr>
   <tr>
      <td>
        {{ Form::text('aerobic[]', null, array('placeholder' => 'aerobic') }}
      </td>
   </tr>
   <tr>
      <td>
        {{ Form::text('core_test[]', null, array('placeholder' => 'core test') }}
      </td>
   </tr>
</table>

Validation rules
$validator = Validator::make(Input::all(), array(
        'name[]' => 'required|alpha',
        'aerobic[]' => 'required|alpha',
        'core_test[]' => 'required|alpha'
    ));

我如何验证输入或有什么其他好的方法来构建它?

提交表单时出现以下错误

htmlentities() expects parameter 1 to be string, array given 
(View: /Applications/XAMPP/xamppfiles/htdocs/hp/v1.1/app/views
/files/templates/apa/form.blade.php) 

我也试过了

$validator = Validator::make(Input::all(), array(
        'name' => 'required|alpha',
        'aerobic' => 'required|alpha',
        'core_test' => 'required|alpha'
    ));

我从 alpha 验证规则中得到了这个错误

preg_match() expects parameter 2 to be string, array given

【问题讨论】:

  • is_array($yourvariable) 不够吗?
  • @astro 我会在哪里使用 is_array 在代码的哪一部分
  • 你应该使用后一个版本的规则name,而不是name[]。然后您可以使用内置规则 array 确保传递的值是一个数组。不幸的是,没有用于验证该数组项的内置方法,因此您需要一个自定义规则。
  • 对不起,我没有在输入名称中看到 []。据我所知,laravel 的验证无法处理数组中的值。您可以尝试使用自定义验证规则来遍历数组并验证 laravel.com/docs/validation#custom-validation-rules 循环中的 preg_match 就可以了

标签: validation laravel


【解决方案1】:

我花了很多时间试图弄清楚如何解决这个问题......Laravel 不希望文本输入是一个数组。所以你要么使用纯 html 作为数组输入,要么使用 custom macros 创建自己的表单类(我假设你使用的是 LaravelCollective)。

【讨论】:

    【解决方案2】:

    去掉每个输入名称中的[]。 PHP 将这些输入解释为数组而不是字符串。

    例子:

    {{ Form::text('name', null, array('placeholder' => 'Name')) }}
    

    【讨论】:

    • 但我每列有 10 行,名称相同,如 name[] X 10 行,如果我在验证失败时将其取下,则不会重新填充旧值
    • 我希望能够像多个复选框一样使用它
    • 哦,对了。没有抓住那部分对不起。 Laravel 目前还没有很好地支持数组验证。您最好为验证器编写自己的扩展(阅读文档)或不幸地以另一种方式验证。
    猜你喜欢
    • 2017-11-13
    • 2021-12-07
    • 2021-03-06
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 2016-07-22
    • 2014-06-07
    相关资源
    最近更新 更多