2016-12-20 2 views
0

Я пытаюсь создать правила проверки для IP-адреса, следующий код не работает:CakePHP правила проверки для IP-адрес

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

Если кто-то может мне точку в правом прямом, что бы будь большой, спасибо!

ответ

1

Существует уже IPv4 и IPv6 метод проверки в Cake 3.x :-)

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'); 

Of изменения курса на 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

Нет причин делать йо ur собственное правило проверки, когда оно встроено! :-) – Spriz

Смежные вопросы