2016-08-29 10 views
-1

私の必要性は、ラーバル検証規則だけです。ラーバル検証を使用して変数をチェックしたいと思います。そして、コントローラ内の文字列を返すことによって、カスタムエラーを表示し、私はこのような何かしたいラーバル検証規則

if(strlen($username) < 4) return '{"r": "US","msg": "username is short"}'; 
if(strlen($username) > 64) return '{"r": "UL","msg": "username is long"}'; 
if(strlen($address) > 200) return '{"r": "A","msg": "wrong address"}'; 

(私は、...私は単なる文字列を返すビュー、ブレード、セッションを使用していけない):。

if($validation->username->min has error) 
    return 'string:username is short'; 

if($validation->address->max has error) 
    return 'string:address is long'; 

if($validation->username->unique has error) 
    return 'string:username already exists'; 

答えて

1

をLaravelのofficial documentationの検証をご覧ください。手動ですべてのケースを処理する必要はありません。 Validator::make()はバリデータオブジェクトを生成します。最初のパラメータは、連想配列としてデータを取得します。 2番目の引数は、必要に応じてすべてのルールを定義します。オプションの3番目のパラメータとして、デフォルトのものが気に入らなければ、別のエラーメッセージを定義することができます。何かが有効でない場合は、errors()メソッドで返されます。あなたが一度にすべてのエラーの配列を取得したくない場合は、あなたがそうのような各フィールドの状態を取得することができます

$validator = Validator::make($yourDataArray, [ 
    'username' => 'min:4|max:64|exists:table,username', 
    'address' => 'max:64' 
], [ 
    'min' => ':attribute is too short.', 
    'exists' => ':attribute already exists. 
]); 

if ($validator->fails()) { 
    return $validator->errors()->all(); 
} 

if ($validator->errors()->has('username')) { // Username field is invalid 
    return $validator->errors()->first('username'); // Get the first error 
} 

そして、あなたは正確に支配知りたい場合は失敗した場合は、次のようなものを使用することができます。

+0

私はそれを知っていました。しかし、私は何かしたい:if($ validator-> errors() - > has( 'username') - > has( 'max')){//ユーザー名の最大フィールドが無効です –

+0

@xray_私の答えを更新しました。 –

関連する問題