CakePHP: Как форма сохраняет ваши данные, когда они не проверяются? - PullRequest
0 голосов
/ 03 марта 2011

Когда вы создаете элемент формы с CakePHP, примерно так:

echo $this->Form->input('User.first_name');

Вы начинаете с пустого поля.Когда вы вводите свое имя John и отправляете форму, если форма не подтверждается, имя John все еще там, когда вы вернетесь на страницу, чтобы исправить вашуошибки проверки.Это удобно, потому что вы можете исправить свои ошибки без необходимости перепечатывать правильные детали.

Как оно возвращается в качестве значения?

Мне нужноЗнайте это, потому что, как только форма будет успешно отправлена, и вы покинете страницу и вернетесь, форма снова станет пустой.

Я сохраняю имя как сеанс, чтобы я мог сделать это вместо этого:

$first_name = $this->Session->read('Cart.User.first_name');
echo $this->Form->input('User.first_name',array('value'=>$first_name));

Теперь, если вы покинете страницу и вернетесь, имя все равно будет там, но это нарушиторигинальная логика, которая не позволяет вводить то, что вы печатаете, когда форма не может быть проверена.


Позвольте мне привести вам пример.

Я создаю свой элемент name, например:

$first_name = $this->Session->read('Cart.User.first_name');
echo $this->Form->input('User.first_name',array('value'=>$first_name));

Я правильно заполняю форму и перехожу на последнюю страницу оформления заказа.Я вижу, что неправильно написал свое имя как Jhon.Поэтому я нажал кнопку редактирования и вернулся в форму, так как я вручную установил value в моей форме, все мои данные все еще там.Я правильно ввожу свое имя как John и отправляю форму.По какой-то другой причине форма не прошла проверку, и я вернулся к ней, но вместо отображения John, как это было бы первоначально, теперь он снова отображает Jhon, потому чтокогда я вручную устанавливаю value, я переопределяю значение по умолчанию тем, что еще находится в сеансе.

Так что, если я знаю, как CakePHP помещает данные обратно в форму, когда они не проверяются, я могу поместить сеансданные возвращаются таким же образом, не переопределяя значения по умолчанию.

1 Ответ

2 голосов
/ 04 марта 2011

Данные передаются обратно в форму при вызове данных POST. Элементы авто-магии FormHelper используют эти данные для заполнения атрибутов значений полей. Если вы покидаете страницу, информация о сообщении не передается.

Вам потребуется сохранить блок $ this-data в качестве значения сеанса, чтобы сохранить его при переходе от страницы к странице.

...