2011-10-31 68 views
2

在Kohana 3.2中,在保存時通過外部驗證Model_User,爲什麼不顯示正確的消息?如何通過模型標籤和錯誤消息傳遞外部驗證?

我在application/messages/models讀取和翻譯精爲「內部」數據user.php,而_external.php駐留在application/messages/models/user

當_external數據無效時,顯示來自Kohana的默認錯誤消息,因此未正確翻譯或從Model_User獲得正確的標籤。

編輯,代碼爲:

// We have $_POST, register a new user 
$user = ORM::factory('user'); 
/* 
* Here a bunch of variables are set 
*/ 
$extra = Validation::factory($_POST)-> 
     rule('email', 'email')-> // I run this check, because in my Model_User, email is filtered through Encrypt 
     rule('name', 'not_empty'); // Same goes for name 

try { 
    $user->save($extra); 
} catch (ORM_Validation_Exception $e) { 
    $this->template->errors = $e->errors('models', true); 
} 

所以,當$extra變量不匹配的規則,我想從application/messages/models/user/_external.php獲得不錯的錯誤信息,這看起來像:

return array(
    'email' => array(
      'email'   => ':field must be a valid email address', 
     ), 
    'name' => array(
      'not_empty'  => ':field must not be empty', 
     ), 
); 

另外,如果:從Model_User「標籤」中獲取字段將會很好。

+0

你可以發佈代碼示例嗎?你傳遞給** errors()**函數的參數是什麼? –

+0

添加上面的代碼。乾杯 – Alasjo

回答

2

您需要將_external.php放在user.php旁邊的messages/models目錄中,而不是在messages/models/user目錄中。我有同樣的問題,它爲我工作。

+0

謝謝,它有幫助。不明白爲什麼我沒有嘗試。所以該文件適用於所有外部驗證消息?如果不同的模型使用相似的字段進行驗證呢? – Alasjo