好的,我正在努力与CakePHP进行数据验证。 我正在使用CakePHP 2.4.6。 我从模型中获得以下代码片段:
user.php的:
public $validate = array(
'username' => array(
'alphanumeric' => array(
'rule' => array('alphanumeric'),
'required' => false,
'message' => 'Please provide your username to log in.'
),
),
'password' => array(
'required' => true,
'message' => 'Please provide your password to log in.'
),
);
Job.php:
public $validate = array(
'patterns_file' => array(
'extension' => array(
'rule' => array(
'extension', array('csv','txt'),
'message' => 'Please upload the patterns in CSV or TXT file.'
)
),
'uploadError' => array(
'rule' => 'uploadError',
'message' => 'Something went wrong with the upload.'
)
),
'xy_value' => array(
'rule' => array('allowEmpty', false),
'message' => 'Please select the xy_value.'
)
);
我的第一个问题不是阻塞,但仍然让我感到不安。虽然我已将消息设置为验证规则,但不显示它们,但无论我如何设置“消息”,都只会显示默认消息。我只是提到这个,因为它可能与我的主要问题有关,如下所示:
在Firefox和Chrome中,验证工作正常。
用户名和密码字段用于登录。它们在FF中显示如下(在Chrome中类似):
在Job的视图中有一个下拉列表和文件上传验证,如下所示:
所以它在FF(30.0)和Chrome(35.0)中工作,但它在IE 9中不起作用。我可以轻松地按下登录,可以轻松提交表单,而无需从下拉列表中选择任何内容或上传文件。没有红灯背景,也没有信息泡沫。
更新1:我刚刚再次检查过,我错了,文件上传仅适用于必须上传内容的方面,但我可以上传任何文件扩展
答案 0 :(得分:3)
除了表单助手定义表单元素的required
和type
属性,然后由浏览器解释之外,您所看到的内容与CakePHP验证无关。验证,但主要是它是否应该对特定元素进行验证。
该字段的验证方式(使用pattern
属性时除外)和messages显示的内容默认情况下完全取决于浏览器,但大多数都支持特定的验证各种输入类型,例如电子邮件验证。
但是,CakePHP对浏览器验证没有进一步影响,如果您需要基于模型验证设置的前端验证,那么您将必须使用基于JavaScript的自定义表单验证来利用您的模型设置。
您在IE9中没有看到任何内容的原因是,只有IE10支持表单验证。对于早期版本的IE,您必须使用某种填充。