验证错误消息

时间:2011-06-02 16:16:48

标签: php kohana

我正在为Kohana开发授权系统。我这样做只是为了教育......

这是查看我的控制器查看提交字段的方式:

$validation =
  Validation::factory( $_POST )
    ->rule( 'username', 'not_empty' )
    ->rule( 'username', 'max_length', array( ':value', 32 ) )
    ->rule( 'username', 'alpha_dash', array( ':value', true ) )
    ->rule( 'password', 'not_empty' )
    ->rule( 'password', 'min_length', array( ':value', 6 ) )
    ->rule( 'password', 'max_length', array( ':value', 255 ) )
    ->rule( 'passwordRepeatedly', 'not_empty' )
    ->rule( 'passwordRepeatedly', 'matches', array( ':validation', 'passwordRepeatedly', 'password' ) )
    ->rule( 'email', 'not_empty' )
    ->rule( 'email', 'email' );

我正在寻找为每个添加的规则显示不同错误消息的方法。我的目标是传递它(一个或所有(如果发生))来查看并在那里显示它们。

的伪代码:

errorFor( 'username', 'not_empty' ) => 'Username is required! Try again...';

如何为每条规则定义不同的错误?我在文档中找不到任何可以理解的内容......

2 个答案:

答案 0 :(得分:2)

你有:

$validation = ...

因此,首先应检查变量是否通过验证:

if($validation->check()) 
{
  // no errors
}
else
{
    $errors = $validation->errors('user');
}

然后您应该在应用程序/消息

中包含 user.php 文件
<?php defined('SYSPATH') or die('No direct script access.');

  return array
  (
     'input_name' => array
     (
        'rule' => 'your message',
        'default' => 'default message'
     ),
     'username' => array
     (
        'not_empty' => 'your message',
        'max_length' => 'your message',
        'alpha_dash' => 'your message',
        'default' => 'default message'
     ),

  );

?>

显示错误:

foreach($errors as $input_field => $message) 
    echo $message;

答案 1 :(得分:0)

验证规则在您的应用程序目录中使用消息文件夹。

检查:http://kohanaframework.org/3.1/guide/orm/examples/validation获取完整验证示例,其中消息文件位于页面的最底部。

需要注意的是消息文件的目录文件名

在KO3.1中(我相信),只要失败,验证就会抛出异常。如果您使用catch (ORM_Validation_Exception $e)捕获它,则可以使用$e->errors('some_directory')来捕获错误消息,然后以数组的形式从messages/some_directory/model_name.php中提取错误消息,就像上面链接中的示例一样。 / p>