Php 如何验证Laravel 5.1中的输入数组字段?
如何为输入字段编写规则,如下所示:Php 如何验证Laravel 5.1中的输入数组字段?,php,laravel,laravel-5.1,Php,Laravel,Laravel 5.1,如何为输入字段编写规则,如下所示: {!! Form::number("amount[]",null,['min' => 0, 'class' => 'form-control col-xs-2 ']) !!} 我尝试了以下操作,但出现了错误:htmlentities()希望参数1是字符串,数组是给定的 $rules = array( 'amount[]' => 'required' ); $this-&
{!! Form::number("amount[]",null,['min' => 0, 'class' => 'form-control col-xs-2 ']) !!}
我尝试了以下操作,但出现了错误:htmlentities()希望参数1是字符串,数组是给定的
$rules = array(
'amount[]' => 'required'
);
$this->validate($request, $rules);
更新:
我按照一个用户的建议尝试了这个,但它并没有再次在页面上重定向它。以下是控制器方法:
public function postEstimate(Request $request) {
$rules = array(
'amount' => 'required|array'
);
$this->validate($request, $rules);
}
如果您希望
amount
作为一个数组,那么规则应该是
$rules = array(
'amount' => 'required|array'
);
检查
如果您没有重定向或收到验证错误,则表示没有验证错误
只需在控制器中检查其a
array
是否为数组,验证就会通过。如果您希望将amount
作为数组,则规则应该是
$rules = array(
'amount' => 'required|array'
);
检查
如果您没有重定向或收到验证错误,则表示没有验证错误
只需在控制器中添加dd($request->input('amount'))
,并检查其是否为数组,如果是数组,则验证将通过。请尝试以下操作:
private $rules = array(
'amount' => 'required|array',
);
public function postEstimate(Request $request) {
$this->validate($request, $this->rules);
}
或者,尝试使用所需的'amount'=>'进行验证
我不确定是否需要此'amount'=>'required | array
请尝试以下方法:
private $rules = array(
'amount' => 'required|array',
);
public function postEstimate(Request $request) {
$this->validate($request, $this->rules);
}
或者,尝试使用所需的'amount'=>'进行验证
我不确定这个'amount'=>'required | array
我想你对我解释的有问题,所以这就是我的意思-
$rules = [];
$count_amounts = count($request->input('amount'));
foreach (range(0, $count_amounts) as $number) {
$rules['amount.' . $number] = 'required|integer|min:0';
}
这应该检查您输入的每个数量是否为整数,并且是否大于0
(就像您在html验证中定义的那样)我想您对我解释的内容有疑问,这就是我的意思-
$rules = [];
$count_amounts = count($request->input('amount'));
foreach (range(0, $count_amounts) as $number) {
$rules['amount.' . $number] = 'required|integer|min:0';
}
这应该检查您输入的每个金额是否都是一个整数,并且大于0
(如您在html验证中定义的)用于数组整数类型值检查的自定义规则实现
首先打开以下文件
/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'
]);
用于数组整型值检查的自定义规则实现
首先打开以下文件
/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'
]);
你得到这个错误是因为它考虑了<代码>金额[]/Case>作为数组,你不能调用字段<代码>金额< /代码>?@ GAL,如果你的意思是<代码>规则<代码>,那么是的,我已经把它设置为<代码>金额<代码>,但它根本就没有抓住它。我的意思是,形式和规则,如果您不想更改,可以将其称为amount.0
内部规则(如果这是您的第一个金额[]),但我不明白您为什么要这样做。@Gal字段是动态的,不是预定义的。我明白了,这可能会帮到你-这与你不需要valueKey
完全不同,你需要做的只是迭代一次,为你的amount
数组构建规则数组。如果没有删除动态字段的选项,则可以使用<代码> Reals函数从0到数组长度。你不能调用字段amount
?@Gal如果你的意思是在规则中
那么是的,我已经将它设置为amount
,但它一点也没有捕捉到。我的意思是表单和规则,如果你不想更改,你可以将其称为amount.0
内部规则(如果这是你的第一个金额[])但是我不明白你为什么要这样做。@Gal字段是动态的,不是预定义的。我明白了,这可能会帮助你-这与你不需要valueKey
完全不同。你需要做的只是迭代一次,为你的amount
数组构建规则数组。如果您没有删除动态字段的选项,则可以使用从0到数组长度的range
函数。它根本不验证它。规则required | array
从5.3起仍然不起作用。它根本不验证它。规则required | array
从5.3起仍然不起作用。使用amount
只是它根本不检测字段<代码>数组
规则在Laravel 5.1中引入,使用数量
只是它根本不检测字段<代码>数组
规则在Laravel 5.1中引入