2016-12-20 49 views
0

我试图创建一个IP地址验证规则CakePHP的验证规则,下面的代码是不工作:的IP地址

$validator 
     ->add('ipfirst', 'validIp', ['rule' => 'ip', 'message' => 'Ip is not valid!']) 
     ->requirePresence('ipfirst', 'create') 
     ->notEmpty('ipfirst'); 

如果任何人都可以点我在正确的指导,这将太棒了,谢谢!

回答

1

已经有在蛋糕3.X IPv4和IPv6验证方法:-)

http://api.cakephp.org/3.3/class-Cake.Validation.Validator.html#_ipv4 & http://api.cakephp.org/3.3/class-Cake.Validation.Validator.html#_ipv6

使用它,像这样:

$validator 
    ->ipv4('ipfirst', 'Please enter ip address') 
    ->requirePresence('ipfirst', 'create') 
    ->notEmpty('ipfirst'); 

当然变化对ipv6如果这就是你想要的:P

+0

Thx,但仍然不工作:( – fmt

+0

然后我会说你的问题是在其他地方,我们有这个工作在生产:-) – Spriz

+0

你可以告诉我们当你做POST/PUT时产生的请求数据吗? – Spriz

-2
You can add custom validation rule with regular expression like: 
// you can change regular expression according to you requirement. 
$validator 
    ->notEmpty('ipfirst', 'Please enter ip address') 
    ->add('ipfirst','validIp',[ 
     'rule'=> function($value){ 
      if (preg_match('/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/', $value)) { 
        return true; 
      } 
      return false; 
     }, 
     'message'=>'Please enter a valid ip address.', 
    ]); 
+1

没有理由让哟我们自己的验证规则,当它内置! :-) – Spriz