CakePHP数据验证在IE中不起作用

时间:2014-06-19 14:57:13

标签: php validation internet-explorer cakephp model

好的,我正在努力与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中类似):

User's login validation

在Job的视图中有一个下拉列表和文件上传验证,如下所示:

Single drop-down list validation File-upload validation

所以它在FF(30.0)和Chrome(35.0)中工作,但它在IE 9中不起作用。我可以轻松地按下登录,可以轻松提交表单,而无需从下拉列表中选择任何内容或上传文件。没有红灯背景,也没有信息泡沫。

更新1:我刚刚再次检查过,我错了,文件上传仅适用于必须上传内容的方面,但我可以上传任何文件扩展

1 个答案:

答案 0 :(得分:3)

前端和后端验证是分开的

除了表单助手定义表单元素的requiredtype属性,然后由浏览器解释之外,您所看到的内容与CakePHP验证无关。验证,但主要是它是否应该对特定元素进行验证。

该字段的验证方式(使用pattern属性时除外)和messages显示的内容默认情况下完全取决于浏览器,但大多数都支持特定的验证各种输入类型,例如电子邮件验证。

但是,CakePHP对浏览器验证没有进一步影响,如果您需要基于模型验证设置的前端验证,那么您将必须使用基于JavaScript的自定义表单验证来利用您的模型设置。

IE9

不支持表单验证

您在IE9中没有看到任何内容的原因是,只有IE10支持表单验证。对于早期版本的IE,您必须使用某种填充。