用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4239|回复: 2
收起左侧

对validation的提示错误信息的看法

[复制链接]
发表于 2008-6-16 15:58:02 | 显示全部楼层 |阅读模式
近来要用到validation来测试表单提示错误.

如:view.php
......
<form>
<input type="text" name="username">
<input type="text" name="email">
</form>

..........

controller.php

$rules['username'] = "trim|required";
$rules['email']    = "trim|required";
$this->validation->set_rules($rules);


在测试中,本来是config里是指向language里一个englist语言文件,这里测试结果是当username,email都为空时)
错误提示:
username is required...
email is required....

看到这些英文,在中国不知有几个人可以看明,特别是中国大多数网民都是学了9年english的.
这些不友好的提示,使我不高兴,所以我就在language里复制一份english,改名cn,然后在config里修改指向cn.
然后,我试着翻译cn/validation_lang.php这个文件,
把:  $lang['required']                 = "The %s field is required.";
译成lang['required']                 = "%s 不能为空.";

于是再测试一下当username,email都为空时)
错误提示:
username不能为空
email不能为空
搞什么啊???username/email是什么啊??还是好多国人不明吧,这也不是友好的提示吧.
这里的username,email就是表单域的属性,在错误信息里出现不太好.无论是可读性还是安全性都不是可取的.
况且,有时,我的表单域名可以是my_usr_name,tel_number,这类的东东,不是所有人都明吧,
当一个人填写表单时,出现这些"my_usr_name不能为空"时,如何去面对呢??

可以是ci里不能为每个表单域自简单分配一个错提示信息.如果通过callback回调函数,这样也太浪费太麻烦了吧,
如果是好多表单个域,要写那多的callback,不太科学.

在CI里有个set_error_message函数,可时这个函数只是设置某一类的规则错误提示,如
set_errors_massage("required", '不能为空');这样相当于没有搞什么东西,错误提示依然没有什么价值..

可以看出,CI还得在validation里面增加一个自定义错误函数.
发表于 2008-6-16 16:29:45 | 显示全部楼层

我也遇到了同样的问题。

错误提示都是英文。。我在尝试找出upload库读取和设置错误消息的地方。找到这样的消息之后再汉化它。
发表于 2008-6-16 16:37:36 | 显示全部楼层

我已经改好了

我是要改写文件上传提示错误信息。我就直接在system\language\english目录下修改了upload_lang.php文件。
刚才看了一下楼主的问题。不知道下面的方式能解决不。你先试试看。
在你的set_rules()之后加入以下代码:
        $fields['username']        = '用户名';
        $fields['email']        = '电邮';
你看看提示消息是不是中文了。

详细信息请参考user guide中form validation一章中Re-populating the form的那一节

本版积分规则