【发布时间】:2016-02-01 19:36:36
【问题描述】:
我需要使用 Request rules() 方法验证一些输入。
这是我的观点(+8 个字段):
{!! Form::open(['method'=>'POST','route' => ['method.store']]) !!}
@for($add = 0; $add < $number; $add++ )
{!! Form::text('first_name[]') !!}
@endfor
@include('part.error')
{!! Form::submit('Add') !!}
{!! Form::close() !!}
用户可以选择添加多少(最多 10 个)。 for 循环包含一个部分,但我确实将它重写为仅包含这个字段,只是为了便于阅读。
这是我的 dd($this->first_name);输出:
array:3 [▼
0 => ""
1 => ""
2 => ""
]
这是我到目前为止在我的请求中得到的:
public function rules()
{
for ($i = 0; $i < $this->number; $i ++)
{
$rules['first_name.' . $i] = 'required'
...
...
}
return $rules;
}
我确实尝试过:
$rules['first_name[' . $i.']'] = 'required';
到目前为止,我唯一得到的是:
htmlentities() expects parameter 1 to be string, array given...
在我的部分(表单域)中。
【问题讨论】:
-
您将数组作为第一个参数传递给 Form::text() 如错误所述。我猜你想要实现的是 Form::text('first_name' . $add)。此外,如果这是您的确切代码,请不要忘记将“form::open”中的“f”大写
-
感谢您的回答。表单没有问题,它很好地传递给了Controller并保存到了模型中。我需要 first_name[],所以我可以存储多个输入。错误是由 rules() 方法给出的,我不知道为什么。没有验证,就没有问题。但我仍然需要以某种方式验证它。编辑:是的,我没有将其复制到帖子中。在项目中还是不错的。
-
抱歉造成误会。这是规则的全部功能吗?如果不是,你会分享 rules() 的整个代码吗?
-
这就是我在 rules() 方法中的全部内容。这些点替换了其他表单字段,例如“second_name”、“last_name”。像另外 8 个字段一样,与 'first_name' 数组相同。
-
检查我的答案。我认为应该可以解决它。