0

Laravel 将数组发送到字段名称row这基本上看起来像:

    [row] => Array
        (
            [0] => 
            [1] => 
            [2] => 
            [3] => 
            [4] => 
            [5] => b_number
            [6] => u_number
            [7] => 
            [8] => 
            [9] => a_name
            [10] => a_value
            [11] => c_name
            [12] => floor
            [13] => stack
        )

该数组可以在不同的索引处具有值,并且该数组可以比这大也可以小。但主要要求是检查

b_number,
u_number, 
a_name,
a_value, 
c_name, 
floor, 
stack

这些值存在于数组中。如果缺少某些值,我需要将错误返回为。

b_numbber is required c_name is required

到目前为止我所做的:

$rules = [
            'row' => [new RequiredCSVColumn()]
        ];

必填CSV列

    public function passes($attribute, $value)
    {
        $arr = array();
        $required_all = array('b_number', 'u_number', 'a_name' ,'a_value', 'c_name', 'floor', 'stack');

        foreach ($required_all as $k => $v) {
            if(!in_array($v,$value))
            {
                $arr[] = $v;
            }
        }
        if(!empty($arr)){
            return false;
        }
        return true;

    }

在这里, $arr 保存了缺少的字段的名称,我只需要将此消息返回为Field Name is required

4

1 回答 1

2

您必须像这样返回自定义消息

class RequiredCSVColumn implements Rule
{
    private $message;

    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct($message = null)
    {
        $this->message = $message;
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
         $arr = array();
         $required_all = array('b_number', 'u_number', 'a_name' ,'a_value', 'c_name', 'floor', 'stack');

         foreach ($required_all as $k => $v) {
            if(!in_array($v,$value))
            {
                $arr[] = $v;
                $this->message += $v." is required ";
            }
         }
        if(!empty($arr)){
           return false;
        }
        return true;
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return $this->message;
    }
}
于 2020-03-06T04:44:18.590 回答