Я хочу, чтобы форма, которую я создал в CakePHP2, отображалась пустой, если данные не были отправлены, а заполнены данными из модели, если существует ключ сеанса Person.id. Вот мой код:Использование идентификатора в сеансе для заполнения полей формы в CakePHP
function about() {
// Make session key for debug purposes
$this->Session->write("Person.id",1);
if($this->request->is('post')) {
debug("post");
} else {
debug("not post");
// Use the value in the session Person.id to find the
// record in the Person model
$this->params->data = $this->Person->findById($this->Session->read("Person.id"));
}
}
Большинство из приведенных выше работ. Если я получаю доступ к представлению без публикации каких-либо данных, тогда форма заполняется данными из модели Person
, как и ожидалось.
Однако, если я отправлю форму, я до сих пор получаю отладочное сообщение not post
, когда ожидал post
.
Если я прокомментирую строку, присваивающую данные $this->params->data
, то отправка формы дает мне правильное отладочное сообщение post
, но я не понимаю, почему это происходит.
Если заполнение $this->params->data
означает то же самое, что и Cake в качестве сообщения формы, то как я могу проверить подлинное, подлинное сообщение?
UPDATE: Если изменить if($this->request->is('post'))
в if($this->request->data)
то работает точно, как я хочу, чтобы это .... но я до сих пор не понимаю, почему.
большое объяснение, спасибо! 'Person.id' на самом деле является результатом запроса, который ищет модель' Person' для 'id' записи на основе отправленного адреса электронной почты. Я использую вышеуказанный код как часть многоступенчатой формы подачи. Данные попадают в базу данных по мере ввода каждого шага, но мне нужен способ вытащить данные обратно в форму, если пользователь решил вернуться к одному из предыдущих этапов. – Joseph