我正在为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...';
如何为每条规则定义不同的错误?我在文档中找不到任何可以理解的内容......
答案 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>