Как сохранить параметры после сбоя проверки формы в CakePHP? - PullRequest
1 голос
/ 15 июня 2009

Я создаю приложение, которое отслеживает подписи различных организаций. У меня есть простая форма, которой я могу передать идентификатор, чтобы он автоматически выбрал нужную организацию. URL для добавления выглядит так:

/signatures/add/3

Форма работает хорошо. Передав 3 или любой другой идентификатор, он автоматически выбирает правильное поле, потому что, на мой взгляд, я делаю:

echo $form->input('organization_id', array('selected' => $this->passedArgs));

Я сталкиваюсь с проблемой, когда пользователь забывает заполнить элемент формы. Форма возвращает пользователя:

/signatures/add/

Так что не выбрана правильная организация. Он возвращается к значению по умолчанию, равному 1. Любые советы о том, как я могу сохранить свои параметры?

Ответы [ 3 ]

1 голос
/ 15 июня 2009

Я не знаю много о торте, но похоже, что действие формы - / подписи / добавить /

Если добавить идентификатор к действию формы, чтобы он читал action = "signatures / add / {ID}" в представлении, он должен вернуться на страницу этой организации

0 голосов
/ 22 июня 2009

Правильный способ установить значение Organization_id для выбранного значения - включить его в массив данных в вашем контроллере. Например,

function add($organization_id)
  if(!empty($this->data)) {
    if($this->Signature->save($this->data)) {
      $this->setFlash('Save successful')
      $this->redirect(array('action' => 'index'))
    } else {
      $this->setFlash('Please review the form for errors')
    }
  }

  if($organization_id) {
    $this->data['Signature']['organization_id'] = $organization_id;
  }
}

Тогда, на ваш взгляд, просто введите

echo $form->create('Signature', array('action' => 'add'))
echo $form->input('organization_id')

и он автоматически вставит значение organization_id из данных контроллеров.

0 голосов
/ 15 июня 2009

Спасибо, Гален. Вы на самом деле указали мне в правильном направлении. Я понял, что моя форма хочет сохранить состояние организации, но я переписал ее, когда сделал это:

echo $form->input('organization_id', array('selected' => $this->passedArgs));

Итак, что я делаю сейчас:

if (!empty($this->passedArgs)) {
            echo $form->input('organization_id', array('selected' => $this->passedArgs));
        } else {
            echo $form->input('organization_id');
        }

И это помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...