cakephp验证和正则表达式

时间:2013-01-24 11:18:14

标签: cakephp-1.3

我在cakephp1.3工作。我必须在model.i中使用cakephp验证来验证我的表单。添加了一个正则表达式来限制特殊字符的输入。

我的代码如下:

var $validate = array(
        'name' => array(
            'unique'=>array(
                 'rule'      => 'isUnique',
                    'message'   => 'Already taken',
            ),
            'pattern'=>array(
                 'rule'      => '/^[a-z]$/i',
                    'message'   => 'Only letters allowed',
            ),
            'empty'=>array(
                'rule' => 'notEmpty',
                'message' => 'This field cannot be left blank',
            ))
    );

规则'unique'不起作用。在我在脚本中添加“模式”规则之前它工作正常。问题是什么?我试着按照上面提到的规则顺序,我认为可能存在一些定位问题,但没有发生任何事情。

请帮助我..

2 个答案:

答案 0 :(得分:4)

用+代替$:

var $validate = array(
    'name' => array(
        'notempty' => array(
            'rule' => array('notempty'),
            'message' => 'This field cannot be left blank',
        ),
        'unique'=>array(
            'rule' => 'isUnique',
            'message' => 'Already taken'
        ),
        'pattern'=>array(
             'rule'      => '[a-zA-Z]+',
             'message'   => 'Only letters allowed',
        ),
    ),
);

答案 1 :(得分:1)

您需要精确确定您的char的时长。在«]»之后添加此数据:

  • *为0或更多
  • + 1或更多
  • ?为0或1
  • {2,9}表示限额之间的计数
  • {2,}仅限
  • {0,1024}仅限最多

http://www.php.net/manual/en/regexp.reference.meta.php

示例:

   'rule'      => '/^[a-z]+$/i',
   'rule'      => '/^[a-z]{3-255}$/i',