在Laravel验证。如何将规则和消息传输到控制器?

问题描述 投票:0回答:1

我在显示自定义错误消息时遇到问题。我收到了一个培训项目,其中包含以下代码:

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://...'
            ];
    }
}

我自己添加了函数message()。

这是控制器代码:

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.unique validation.url

如何将规则和消息传输到控制器?

laravel validation rules
1个回答
0
投票

尝试像那样修改messages()函数:

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