自定义 Laravel 验证消息

新手上路,请多包涵

我正在尝试在 Laravel 5 中创建用于验证的自定义消息。这是我迄今为止尝试过的:

 $messages = [
    'required'  => 'Harap bagian :attribute di isi.',
    'unique'    => ':attribute sudah digunakan',
];
$validator = Validator::make($request->all(), [
    'username' => array('required','unique:Userlogin,username'),
    'password' => 'required',
    'email'    => array('required','unique:Userlogin,email'),$messages
]);

if ($validator->fails()) {
    return redirect('/')
        ->withErrors($validator) // send back all errors to the login form
        ->withInput();
} else {
    return redirect('/')
        ->with('status', 'Kami sudah mengirimkan email, silahkan di konfirmasi');
}

但它不起作用。该消息仍与默认消息相同。我该如何解决这个问题,以便我可以使用我的自定义消息?

原文由 YVS1102 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 460
2 个回答

如果您使用 $this->validate() 最简单的一种,那么您应该编写类似这样的代码..

 $rules = [
        'name' => 'required',
        'email' => 'required|email',
        'message' => 'required|max:250',
    ];

    $customMessages = [
        'required' => 'The :attribute field is required.'
    ];

    $this->validate($request, $rules, $customMessages);

原文由 Zedex7 发布,翻译遵循 CC BY-SA 3.0 许可协议

运行以下命令以在 Laravel 上创建自定义规则

我假设名称是 CustomRule

 php artisan make:rule CustomRule

结果,该命令被创建,例如PHP代码

如果 required 关键字没有在规则上,该规则将不起作用

<?php

namespace App\Rules;

use Illuminate\Contracts\Validation\Rule;

class CustomRule implements Rule
{
    /**
     * Create a new rule instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Determine if the validation rule passes.
     *
     * @param  string  $attribute
     * @param  mixed  $value
     * @return bool
     */
    public function passes($attribute, $value)
    {
        //return  true or false
    }

    /**
     * Get the validation error message.
     *
     * @return string
     */
    public function message()
    {
        return 'The validation error message.';
    }
}

并首先使用它,如果我们还没有,我们应该创建一个请求类

php artisan make:request CustomRequest

自定义请求.php

 <?php

namespace App\Http\Requests\Payment;

use App\Rules\CustomRule;
use Illuminate\Foundation\Http\FormRequest;

class CustomRequest extends FormRequest
{

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules(): array
    {
        return [
            'custom' => ['required', new CustomRule()],
        ];
    }

    /**
     * @return array|string[]
     */
    public function messages(): array
    {
        return [
            'custom.required' => ':attribute can not be empty.',
        ];
    }
}

在您的控制器上,您应该向控制器注入自定义请求

你的控制器方法

class FooController
{
    public function bar(CustomRequest $request)
    {

    }
}

原文由 dılo sürücü 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题