4

我在 cakephp1.3 工作。我必须在模型中使用 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',
            ))
    );

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

请帮助我..

4

2 回答 2

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',
        ),
    ),
);
于 2013-01-24T16:05:37.573 回答
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',
于 2013-12-26T10:09:56.977 回答