如何验证 Laravel 请求类中的数组值?

问题描述

在我的应用程序中,我有一个请求文件,如下所示:

storeFactoryUser.PHP

public function rules()
    {
        return [
            'factory_users' => 'array','factory_users.*.first_name' => 'required','factory_users.*.last_name' => 'required','factory_users.*.username' => 'required|alpha_dash|unique:users,username','factory_users.*.f_user_email' => 'required|unique:users,email','factory_users.*.external_ref' => 'required'
        ];
    }

现在当我输入一个已经存在的用户名时,它返回如下错误信息:

The factory_users.1.username has already been taken.

不是像上面那样显示,我需要用数组值来显示,例如:

Given factory user's username factory1 has already been taken.

为了实现这个,我写了一个消息函数如下:

public function messages()
{
    $messages = [];
    foreach ($this->factory_users as $key => $factory_user) {
        $messages['factory_users.*.username.alpha_dash|unique:users,username'] = "Given factory user's username ".$factory_user['username'].' has already been taken.';
    }

    return $messages;
}

但是,它仍然返回与我上面提到的相同的错误消息。

解决方法

你应该这样使用..

$factory_user['username']

代替

$factory_user->username