2015-07-11 12 views

Odpowiedz

13

Chcesz użyć reguły validateUnique. Na przykład, aby sprawdzić adres e-mail jest unikatowa na zasadzie UsersTable: -

public function validationDefault(Validator $validator) 
{ 
    $validator->add(
     'email', 
     ['unique' => [ 
      'rule' => 'validateUnique', 
      'provider' => 'table', 
      'message' => 'Not unique'] 
     ] 
    ); 

    return $validator; 
} 

Szczegóły można znaleźć w the API docs.

+0

Wielkie dzięki! Używałem buildRules (RulesChecker $ rules), które działało poprawnie, ale nie dało prawidłowego komunikatu o błędzie – pkk

+0

Znaleziony problem nie działa podczas edycji. Czy możesz pomóc? – pkk

0

Użyj reguł aplikacji opisanych w manual.

+0

Łącze dostarczone przez ADMad jest doskonałym i możliwie najlepszym rozwiązaniem. W swojej funkcji _buildRules_ w tabeli dodaj regułę: '$ rules-> add ($ rules-> isUnique (['UNIQUE_COLUMN']));' – Stephan

1

Dostawcami sprawdzania poprawności mogą być obiekty lub nazwy klas. Jeśli używana jest nazwa klasy, metody muszą być statyczne. Aby korzystać dostawcy innego niż domyślne „”, należy ustawić klucz provider w regule:

// Use a rule from the table provider 
$validator->add('title', 'unique', [ 
    'rule' => 'uniqueTitle', 
    'provider' => 'table' 
]); 

Aby uzyskać więcej informacji, spójrz na sekcję w książce CakePHP3 Adding Validation Providers.

3

trzeba użyć zasady z ORM Cake na stole ...

dodać to na górze UsersTable po nazw

use Cake\ORM\Rule\IsUnique; 

Następnie przygotować regułę stosuje się do danej dziedzinie przez umieszczenie go w funkcji publicznej

public function buildRules(RulesChecker $rules){ 
     $rules->add($rules->isUnique(['email'])); 
     return $rules; 
    } 

zapoznać się z dokumentacją cakephp uzyskać więcej informacji o RULES

+0

To powinno być oznaczone jako poprawna odpowiedź! – Andy

+0

Jak wyświetlić niestandardową wiadomość zamiast "Dostarczona wartość jest nieprawidłowa" dla unikalnych pól? –

+0

Poprawiam się, isUnique ma tylko 2 parametry, 'public function isUqueque (array $ fields, $ message = null) {' , więc twój kod będzie podobny: '$ rules-> add ($ rules-> isUnique (['email'], "Twoja wiadomość tutaj!")); ' – Rod

Powiązane problemy