Вопрос

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

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

Вид

<?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');
            }
Это было полезно?

Решение

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

Я подозреваю, что ваша проблема - это торт - это входные формы строить в зависимости от неправильной модели - поля формы здания для 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');

Другие советы

Ты пытался:

echo $session->flash();

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

Привет ты, кто спрашивает
Если вы хотите показать сообщение об ошибке, который возвращает из подтверждения 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');
   ?>

Удачи!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top