Проверка Cakephp - PullRequest
       15

Проверка Cakephp

1 голос
/ 27 октября 2010

Я использую Account Controller, который не имеет своей собственной таблицы, но использует пользовательскую модель.

Все работает нормально, кроме случаев, когда я проверяю любую форму.В нем говорится, что проверка завершается неудачно (когда я пытаюсь завершить проверку), но не выдает ошибку ниже поля

Просмотр

<?php echo $this->Form->input('id'); ?>
              <label for="UserPassword">New Password:</label>
              <?php echo $this->Form->text('password', array('type' => 'password', 'value' => 'harsha')); ?><em>Password must be min 6 characters.</em> <?php echo $form->error('password'); ?>

Действие контроллера

            if($this->User->saveField('password', $this->data['User']['password'], array('validate' => 'first'))) {
                $this->Session->setFlash('Password has been changed.', 'flash-success');
            } else {
                $this->Session->setFlash('There was some problem with our system. Please try after some time.', 'flash-warning');
            }

Ответы [ 3 ]

3 голосов
/ 27 октября 2010

Попробуйте debug() содержимое $this->validationErrors на ваш взгляд, а также $this->data в вашем контроллере сразу после отправки формы.Это должно дать вам гораздо больше информации для работы.

Я подозреваю, что ваша проблема в том, что Cake строит входные данные формы на основе неправильной модели - строит поля формы для Account.id и Account.password вместо User.id и User.password.Это связано с тем, что FormHelper берет свою модель по умолчанию из контроллера / представления, из которого он вызван, который в вашем случае выглядит как AccountsController.

Для генерации полей User.id и User.password представления вашего контроллерадля обработки ожидаемых данных вам нужно будет добавить User. в вызовах FormHelper.Таким образом:

$this->Form->input('User.id');
$this->Form->text('User.password');
2 голосов
/ 29 октября 2010

Вы пробовали:

echo $session->flash();

Обратите внимание: что бы ни говорилось в руководстве, оно возвращается, а не отражается Я зарегистрировал это некоторое время назад, и это было изменено в руководстве 1.3, но не 1.2.

1 голос
/ 16 декабря 2014

Привет, кто спрашивает
Если вы хотите показать сообщение об ошибке, которое возвращается из проверки UserModel
Таким образом, вы можете добавить код строки ниже после ввода пароля формы

  <?php 
      if ($this->Form->isFieldError('password')) { 
       echo $this->Form->error('password', array('class' => 'error')); 
    ?>

и если вы хотите показать сообщение об ошибке, установленное методом setFlash
Вы должны перенаправить страницу и затем использовать $ this-> Session-> flash ('flash-name') на странице, которую хотите показать *

   <?php
    //in UsersController
    $this->Session->setFlash('message here', 'flash-name');
    //in view
    echo $this->Session->flash('flash-name');
   ?>

Удачи!

...