2015-08-18 17 views
6

Muszę sprawdzić dane wejściowe na podstawie wyrażenia regularnego.CakePHP 3.0 - Sprawdzanie poprawności wyrażenia regularnego

//Validator 
$validator 
      ->notEmpty('sl_no') 
      ->add('reg_no', 'validFormat',[ 
        'rule' => '/^([ABCD]{2,2}[0-9]{4,4})$/i', 
        'message' => 'Please enter a valid serial number.' 
      ]); 

Ale pojawia się następujący błąd:

Method /^([ABCD]{2,2}[0-9]{4,4})$/i does not exist.

Ponadto, nie ma wzmianki o wyrażeniach regularnych w Cake 3.0 validation Documentation przeciwieństwie Cake 2 Documentation.

Czy zostało to przeniesione lub zmodyfikowane?

+0

dawno po fakcie, ale tylko zauważyć, że zamiast {2,2} i {4,4}, można napisać {2} i {4} dopasuj dokładnie 2 i 4 znaki, odpowiednio. –

Odpowiedz

19

Spróbuj

$validator 
     ->notEmpty('sl_no') 
     ->add('reg_no', 'validFormat',[ 
       'rule' => array('custom', '/^([ABCD]{2,2}[0-9]{4,4})$/i'), 
       'message' => 'Please enter a valid serial number.' 
     ]); 
+3

I wyjaśnienie, dlaczego tak jest. W CakePHP 3.0 masz obiekt 'Validator', który jako domyślny dostawca używa zestawów opisanych w klasie [Validation'] (http://api.cakephp.org/3.0/class-Cake.Validation.Validation.html). Z tej klasy interesuje Cię metoda [custom()) (http://api.cakephp.org/3.0/class-Cake.Validation.Validation.html#_custom), która służy do sprawdzania pole względem ciągu REGEX. Musisz więc podać nazwę reguły ('custom') i argument (twój ciąg regex) wewnątrz wartości' rule', kiedy 'add()' to. – user221931

+0

Czy można to zintegrować z DefaultPasswordHasher? I.E po dopasowaniu tego walidatora, jest on uruchamiany przez funkcję? –

Powiązane problemy