Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-表单验证-至少需要一个数组字段_Php_Laravel_Validation - Fatal编程技术网

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;