2016-03-18 38 views
1

這是代碼爲/resource/lang/en/validation.php自定義錯誤消息爲每個指定元素名稱和驗證規則:Laravel:每個控制器的自定義錯誤消息?

'custom' => [ 
    'attribute-name' => [ 
     'rule-name' => 'custom-message', 
    ], 
], 

但是,這是我的問題。我有:

  • 控制器A - >元素[標題] - >需要 - >消息 'AAA'
  • 控制器B - >元素[標題] - >需要 - >消息 'BBB'

但是由於某些原因,我不想在請求類的方法消息()中自定義錯誤消息()。

我需要在/resource/lang/en/validation.php中定製消息。我怎樣才能做到這一點?僞代碼:

ControllerA.title.require => 'AAA' 
ControllerB.title.require => 'BBB 

' 請幫助我。並非常感謝你。

+0

按我的理解,我認爲這是不可能通過的validiaiton .php因爲在自定義數組中,我們必須提供attribute_name,rule_name,然後提供該規則的特定消息。並根據你的問題,你有相同的屬性名稱是'title.'所以可能每次都會返回第一條消息。 –

+0

如果你想爲不同的控制器提供不同的消息,那麼如果你正在使用** laravel> = 5.1 **,爲每個控制器創建不同的請求,並且在該請求類中可以覆蓋'rules'和'messages()'函數。因此,在請求類中寫入的消息將在應用驗證時返回。 –

回答

0

實現自定義消息最簡單的方法是在驗證的時候指定自定義消息,e.g:

// custom messages 
$messages = [ 'rule-name' => 'Custom message' ]; 

// validate input with rules, adding in custom messages 
$validation = Validator::make(Input::all(), $rules, $messages); 

第三個參數$messagesValidator::make讓您自定義消息的傳遞數組。你甚至可以添加替代,如:

$messages = [ 'rule-name' => 'Custom message for :attribute should be :value' ]; 

你甚至可以指定不同的驗證問題的自定義消息相同的字段:

$messages = [ 
    'field.required' => 'Field is required', 
    'field.size' => Field is too short' 
];