6

Laravelの長さベースの検証を実装しようとするとき

'password' => array(
    'required',
    'alpha_dash',
    'Min:7'
)

私のビューでエラーメッセージを出力します

{{
    $errors->first(
        'password',
        '<span class="error">:message</span>'
    )
}}

私は得る

Unhandled Exception
Message:
Array to string conversion
Location:
_avalog\laravel\messages.php on line 188
Stack Trace:
#0 _avalog\laravel\laravel.php(42): Laravel\Error::native(8, 'Array to string...', '_avalog...', 188)
#1 [internal function]: Laravel\{closure}(8, 'Array to string...', '_avalog...', 188, Array)
#2 _avalog\laravel\messages.php(188): str_replace(':message', Array, 'get('password', 'get()

デバッグ中、それは本当のようです。もし私がprint_r( $validation );

Laravel\Validator Object (
    [attributes] => Array (
        [username] => fred
        [email] =>
        [password] => asd
        [csrf_token] => DWg3CUfqtMZkIRfyZXNEqygvWUHsGS9SQMue2V4S
    )
    [errors] => Laravel\Messages Object (
        [messages] => Array (
            [email] => Array (
                [0] => The email field is required.
            )
            [password] => Array ( 
                [0] => Array (
                    [numeric] => The password must be at least 7.
                    [file] => The password must be at least 7 kilobytes.
                    [string] => The password must be at least 7 characters.
                )
            )
    )
    [format] => :message
)

ルールでalphadashと指定したにもかかわらず、メッセージには実際には入力タイプに依存しているように見えるパスワードの配列が含まれていることがわかります。

[password] => Array (
    [0] => Array (
        [numeric] => The password must be at least 7.
        [file] => The password must be at least 7 kilobytes.
        [string] => The password must be at least 7 characters.
    )
)

残りはしないでください

[email] => Array (
    [0] => The email format is invalid.
)

Laravelフレームワークを見るとmessages.php、そのような配列ベースのメッセージングを処理するものがないので、そこに到達する前に何か間違ったことをしていると思いますが、何がわかりません。

ご協力いただきありがとうございます。

4

2 に答える 2

20

ルールの入力が間違っています。それは次のようでなければなりません

'password' => 'required|alpha_dash|min:7'

詳細については、Laravel検証ドキュメントをご覧ください

于 2013-03-18T00:48:15.517 に答える
1

'password.min' => "パスワードは6文字以上にする必要があります。"、

$custom_validation_messages = array(
  'password.min' => "Password can not be less than 6 characters.",
  'password.required' => "Password is required"
);

   $validator = Validator::make($data, [
                //'email'          => ['required','unique:users,email','email','max:255'],
   'email'          => ['required','email','max:255'],
   'password'       => 'required|min:6|confirmed'

 ],$custom_validation_messages);
于 2020-05-28T16:01:50.570 に答える