Php Laravel-表单验证-至少需要一个数组字段
我有这样一个表单数组:Php Laravel-表单验证-至少需要一个数组字段,php,laravel,validation,Php,Laravel,Validation,我有这样一个表单数组: <textarea name="intro[en]"></textarea> <textarea name="intro[fr]"></textarea> <textarea name="intro[de]"></textarea> 我实际上需要的是,至少有一个介绍被填写 对于现有的验证器,这是可能的吗?如果是,语法是什么?如果没有,我将如何创建该验证器?您需要的是: 你也可以试试这个 'intro
<textarea name="intro[en]"></textarea>
<textarea name="intro[fr]"></textarea>
<textarea name="intro[de]"></textarea>
我实际上需要的是,至少有一个介绍被填写
对于现有的验证器,这是可能的吗?如果是,语法是什么?如果没有,我将如何创建该验证器?您需要的是: 你也可以试试这个
'intro' => 'required|array|min:1'
我想你应该试试这个:
public function rules()
{
return [
'intro.*.en' => 'required',
'intro.*.fr' => 'required',
'intro.*.de' => 'required',
];
}
希望这项工作为你 您可以在AppServiceProvider中为其定义自定义规则,如下面的代码所示
$this->app['validator']->extend('emptyArray', function ($attribute, $values, $parameters)
{
foreach($values as $data){
if(count($data)) return true;
}
return false;
});
Validator::replacer('emptyArray', function ($message, $attribute, $rule, $parameters) {
return 'You need to fill up at least one field for '.$attribute;
它将检查数组字段是否为空。谢谢:)是否有更好的方法使其更具动态性?以防我会添加一种新的语言?
public function rules()
{
return [
'intro.*.en' => 'required',
'intro.*.fr' => 'required',
'intro.*.de' => 'required',
];
}
$this->app['validator']->extend('emptyArray', function ($attribute, $values, $parameters)
{
foreach($values as $data){
if(count($data)) return true;
}
return false;
});
Validator::replacer('emptyArray', function ($message, $attribute, $rule, $parameters) {
return 'You need to fill up at least one field for '.$attribute;