如何为输入字段编写规则,如下所示:
{!! Form::number("amount[]",null,['min' => 0, 'class' => 'form-control col-xs-2 ']) !!}
我尝试了以下错误:htmlentities() expects parameter 1 to be string, array given
$rules = array(
'amount[]' => 'required'
);
$this->validate($request, $rules);
更新
我按照用户的建议尝试了此操作,但它没有再将其重定向到页面上。以下是控制器方法:
public function postEstimate(Request $request) {
$rules = array(
'amount' => 'required|array'
);
$this->validate($request, $rules);
}
答案 0 :(得分:3)
我猜你的问题与我解释的有关,所以这就是我的意思 -
$rules = [];
$count_amounts = count($request->input('amount'));
foreach (range(0, $count_amounts) as $number) {
$rules['amount.' . $number] = 'required|integer|min:0';
}
这应检查您拥有的每个amount
输入是否为整数且大于0
(就像您在html验证中定义的那样)
答案 1 :(得分:1)
而是试试这个:
private $rules = array(
'amount' => 'required|array',
);
public function postEstimate(Request $request) {
$this->validate($request, $this->rules);
}
或尝试使用'amount' => 'required
我不确定这个'amount' => 'required|array
答案 2 :(得分:1)
对于数组的整数类型值检查的自定义规则实现
首先打开以下文件
/resources/lang/en/validation.php
然后添加自定义消息
'numericarray' => 'The :attribute must be numeric array value.',
'requiredarray' => 'The :attribute must required all element.',
再次打开另一个文件
/app/Providers/AppServiceProvider.php
现在在启动功能中添加自定义验证代码。
public function boot()
{
$this->app['validator']->extend('numericarray', function ($attribute, $value, $parameters)
{
foreach ($value as $v) {
if (!is_int($v)) {
return false;
}
}
return true;
});
$this->app['validator']->extend('requiredarray', function ($attribute, $value, $parameters)
{
foreach ($value as $v) {
if(empty($v)){
return false;
}
}
return true;
});
}
现在,您可以将 requiredarray 用于数组所需的所有元素。并且还使用 numericarray 进行数组的整数类型值检查
$this->validate($request, [
'field_name1' => 'requiredarray',
'field_name2' => 'numericarray'
]);
答案 3 :(得分:0)
如果您希望amount
作为数组,规则应为
$rules = array(
'amount' => 'required|array'
);
检查doc
如果您没有重定向或获得验证错误,则表示没有验证错误
控制器中只有dd($request->input('amount'))
,如果它是一个数组,则检查它是否为array
,然后验证将通过。