Podałem walidację w modelu. Ponadto, dałem pewne zatwierdzenie w kontrolerze w celu sprawdzenia kodu captcha. Następnie aplikacja nie wyświetla błędów sprawdzania poprawności modelu. Jeśli skomentuję kod kontrolera, sprawdzanie poprawności modelu działa poprawnie i wyświetla błędy. Obie nie działa ..Sprawdzanie poprawności cakephp z obu modeli i kontrolera
kod modelu (próbka)
class User extends AppModel {
var $name = 'User';
var $validate = array(
'username' => 'notempty',
'firstname' => 'notempty'
);
}
kod Kontroler
if (!empty($this->data)) {
$this->User->set($this->data);
$this->User->create();
$captcha = $this->Session->read('CAPTCHA_CODE');
if (strtolower($captcha) != strtolower($this->data['User']['captcha']))
{
$this->User->invalidate('captcha', __('Sorry, your entry did not match', true));
}
if ($this->User->save($this->data, array('validate' => 'only')))
{
if ($this->User->save($this->data, array('validate' => 'false'))) {
$this->Session->setFlash(__('Registered successfully', true));
$this->redirect('success');
}
}else {
$this->Session->setFlash(__('Please, try again.', true));
}
}
Wymieniłem linię if ($this->User->save($this->data, array('validate' => 'only')))
z if ($this->User->validates())
, a następnie również nie działa.
pomóż
Mówiąc o MVC, Model nie powinien zawierać pola captcha. UserModel nie powinien wiedzieć o "captcha". Do tej pory nie jestem w stanie znaleźć odpowiedniego, logicznego rozwiązania tego problemu. – hongster
@hongster, to świetny punkt. Obecnie mam problem "sprawdzania poprawności", czy pole new_password pasuje do pola confirm_password. Jednak umieszczenie tej logiki w Modelu nie miałoby sensu. Jeśli chodzi o hasło, naprawdę sprawdzałoby się tylko na podstawie zasad dotyczących haseł. Dzięki za ustawienie mnie prosto. – rob5408