Валидация в Laravel.Как передать правило и сообщение на контроллер? - PullRequest
0 голосов
/ 23 февраля 2019

У меня проблемы с отображением пользовательских сообщений об ошибках.Я получил учебный проект со следующим кодом:

class StoreProject extends FormRequest
{
    public function authorize()
    {
        return true;
    }
    public function rules()
    {
        return [
            'name' => 'required|unique:projects,name|max:255',
            'website' => 'url',
        ];
    }

    public function messages()
    {
           return [
                'name' => 'Це імʼя вже використовується',
                'website' => 'Будь-ласка введіть адресу вашого сайту вірно http://...'
            ];
    }
}

Я сам добавил сообщение функции ().

Это код контроллера:

public function store(StoreProject $request)
{

    $project = new Project($request->except('project_image'));

    $project->owner_id = Auth::user()->id;
    $project->status_id = StatusProject::UNCONFIRMED;

    //send email to moderator and accountant for the moderation
    if( $project->save() ) {
        $this->dispatch(new ConfirmNewProject($project));
    }

    // load image from cropie serves
    if ($request->has('project_image')) {
        $file = self::croppie($request->input("project_image"));
        $project->uploadImage($file, 1);
    }

    return redirect()->route('projects.show', [$project->id]);
}

Я пробовал различные методы: withErrors ([]) и этот метод:

'custom' => [
        'attribute-name' => [
            'rule-name' => 'custom-message',
            'name' => 'Це імʼя вже використовується',
            'website' => 'Будь-ласка введіть адресу вашого сайту вірно http://...'
        ],
    ]

, но при проверке я получаю значение ключа, а не текст сообщения об ошибке

Ошибки: проверка.уникальный validation.url

Как передать правило и сообщение на контроллер?

1 Ответ

0 голосов
/ 23 февраля 2019

Попробуйте изменить функцию messages() следующим образом:

public function messages()
{
       return [
            'name.required' => 'Name required message',
            'name.unique' => 'Name unique message',
            'name.max' => 'Name max message',
            'website.url' => 'Будь-ласка введіть адресу вашого сайту вірно http://...'
        ];
}
...