2015-09-24 8 views
5

エラーメッセージでカスタムラベルを取得しようとしています。私の入力は入れ子になっており、ドット表記法(例えばPOLICY.HOLDER.NAME)を使って入力を検証できます。それらは入れ子にする必要があり、すべての大文字はdb構造に一致するので、簡単に大量に割り当てることができます。Laravelでネストされた入力のカスタム属性ラベルを設定する方法

'attributes' => ['POLICY.HOLDER.NAME' => 'Policy Holder']の同じ表記をresources/lang/en/validation.phpに使用しても結果は得られなかった。

私はフォームに設定したラベルに一致させるようにしています。

アプリ/ HTTP /コントローラ/ OfferController.php(ちょうど興味深い部分)

public function postOffer(OfferRequest $request) { // 
    $post_data = $request->all(); 
    if (isset($post_data['POLICY'])) { 
     // code to get data from $_POST and assign to models 
    } 
} 

アプリ/ HTTP /要求/ OfferRequest.php

<?php 
namespace App\Http\Requests; 

use App\Http\Requests\Request, Auth; 

class OfertaRequest extends Request 
{ 

    public function authorize() { 
     return Auth::check(); 
    } 

    public function rules() 
    { 
     return [ 
      'POLICY.HOLDER.NAME' => 'required', 
     ]; 
    } 

    public function forbiddenResponse() 
    { 
     return Response::make('Permission denied foo!', 403); 
    } 

} 

リソース/ LANG/EN /検証。 PHP

'attributes' => [ 
    'POLICY.HOLDER.NAME' => 'Some custom string here...', 
], 

私が見てきたように、カスタム検証アトリビュート配列に入力名を追加することはできませんでしたss。入力を空白のままにしたときに表示されるエラーメッセージは次のとおりです。

保有者。 n分野が必要です。

スペースに注意してください。私もそれを試した、それは動作しませんでした。

+0

あなたがこれまでに試した何のためのコードを追加することはできますか?例えば。コントローラ、ビュー、検証コード –

+0

@JamesFlightコードを追加しました –

+0

ここにあるPHPチャットルームの人々は、大文字の入力名のためにラベールバグかもしれないと言っています。小文字に変更すると、もはやそれらのスペースが置かれなくなり、プレースホルダが機能します。残念ながら、私は大文字でモデルの属性とDBの列を持っている必要があります...コマンドのチェーンの上から来て、私はこれで言うことがありません:)) –

答えて

6

明示的にネストされた配列として宣言:

'attributes' => [ 
    'POLICY' => [ 
     'HOLDER' => [ 
      'NAME' => 'Some custom string here...', 
     ] 
    ] 
], 
+1

私はそれを考えたことはない、期待どおりに動作します。本当にありがとう! –

+0

ようこそ。助けてうれしい! –

関連する問題