Как проверить значения массива в классе запросов 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;
}

Но тем не менее, он возвращает то же сообщение об ошибке, о котором я упоминал выше.


person anonymous    schedule 18.01.2021    source источник
comment
да, но мне не помогло. Я был бы очень рад, если бы вы могли привести мне пример :)   -  person anonymous    schedule 18.01.2021
comment
public function messages() { return [ 'factory_users.*.f_user_email.unique' => 'Данный фабричный пользователь XYZ уже занят.', ]; } //Попробуйте это и дайте мне знать   -  person Vijay Sankhat    schedule 18.01.2021
comment
factory_users.0.username уже занято, это ответ, он не показывает сообщение внутри функции сообщений:/   -  person anonymous    schedule 18.01.2021
comment
Вы уверены, что ваш ключ массива «f_user_email»? покажи мне свою функцию сообщения   -  person Vijay Sankhat    schedule 18.01.2021
comment
Я обновил свой вопрос, пожалуйста, проверьте   -  person anonymous    schedule 18.01.2021
comment
Попробуйте без цикла for и со статическим тестовым сообщением вроде этого return [ 'factory_users.*.username.unique' =› имя пользователя уже занято., 'factory_users.*.f_user_email.unique' =› электронная почта уже занята., ];   -  person Vijay Sankhat    schedule 18.01.2021
comment
да, но мне также нужно отображать значения массива, потому что, поскольку это массив, нужно показать, где именно ошибка   -  person anonymous    schedule 18.01.2021
comment
Вы можете просто дать шанс, пожалуйста?   -  person Vijay Sankhat    schedule 18.01.2021
comment
хорошо, я постараюсь сообщить вам :)   -  person anonymous    schedule 18.01.2021


Ответы (1)


Вы должны использовать вот так..

$factory_user['username']

вместо

$factory_user->username
person vineeth pappu    schedule 18.01.2021
comment
это решило одну из моих проблем, теперь попытка получить свойство «имя пользователя» необъектной ошибки не выдается, но все же не отображает сообщение об ошибке внутри функции сообщений:/ - person anonymous; 18.01.2021
comment
Я рад, что это помогло вам решить одну из ваших проблем. Попытаюсь найти, почему не отображается сообщение. Я предполагаю, что это сообщение [] не приготовлено должным образом. хотя не уверен. - person vineeth pappu; 18.01.2021
comment
хорошо, спасибо:) - person anonymous; 18.01.2021