W jaki sposób sprawdzasz poprawność pola w programie cakephp 3.0? Wygląda na to, że w API nie ma funkcji sprawdzania poprawności.Sprawdzanie poprawności pól jako unikalnych w cakephp 3.0
Odpowiedz
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.
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.
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
To powinno być oznaczone jako poprawna odpowiedź! – Andy
Jak wyświetlić niestandardową wiadomość zamiast "Dostarczona wartość jest nieprawidłowa" dla unikalnych pól? –
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
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
Znaleziony problem nie działa podczas edycji. Czy możesz pomóc? – pkk