如何为输入字段编写规则,如下所示:
{!! 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);
}
我想你对我所解释的有问题,所以这就是我的意思-
$rules = [];
$count_amounts = count($request->input('amount'));
foreach (range(0, $count_amounts) as $number) {
$rules['amount.' . $number] = 'required|integer|min:0';
}
这应该检查您的每个amount
输入都是一个整数,并且大于0
(就像您在html验证中定义的那样(
请尝试以下操作:
private $rules = array(
'amount' => 'required|array',
);
public function postEstimate(Request $request) {
$this->validate($request, $this->rules);
}
或者,尝试使用'amount' => 'required
进行验证
我不确定这个'amount' => 'required|array
用于自定义规则实现数组的整数值检查
首先打开以下文件
/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用于数组所需的所有元素。同时使用数字数组对数组进行整数值检查
$this->validate($request, [
'field_name1' => 'requiredarray',
'field_name2' => 'numericarray'
]);
如果您希望amount
是一个数组,那么规则应该是
$rules = array(
'amount' => 'required|array'
);
检查文档
如果你没有重定向或得到一个验证错误意味着没有验证错误
控制器中只有dd($request->input('amount'))
,并检查它是否为array
。如果它是一个数组,则验证将通过。