Почему входные данные формы CakePHP хранятся в $ this-> data, а данные POST хранятся в $ this-> params ['form']? - PullRequest
0 голосов
/ 03 мая 2010

В учебнике по сохранению cakephp говорится, что данные поста должны быть в $ this-> data, но я обнаружил, что это не так, а вместо этого внутри $ this-> params ['form']

Однако при использовании помощника по форме cakephp данные отображаются в $ this-> data.

Правильно ли я должен проверить оба местоположения в моем контроллере?

Это просто кажется пустой тратой дополнительного кода. Разве данные не должны появляться в одном месте, если они получены от автора запроса на отдых или формы Cakephp?

ps я использую cakephp 1.3

1 Ответ

5 голосов
/ 03 мая 2010

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

Данные, хранящиеся в переменной Controller :: data, берутся из значений POST, где имя входа начинается с данных. Поэтому этот тег ввода будет иметь значение в $ this-> data ['Anything'] ['Something']:

<input type="text" name="data[Anything][Something]" />

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

<?php echo $form->input( 'Something' ); ?>

Помощник по форме достаточно умен, чтобы знать, какую модель вы используете (я думаю, потому что он устанавливает атрибут при вызове $ form-> create ('Modelname')). Таким образом, приведенный выше пример (PHP / form helper) выведет:

<input type="text" name="data[Modelname][Something]" ... />

Конечно, есть несколько предостережений (имя модели. Что-то должно быть полем, существующим в соответствующей таблице базы данных), но вы можете узнать больше, посмотрев руководство.

И, наконец, я считаю, что атрибут $ this-> params ['form'] имеет все значения POSTed, независимо от того, добавили ли вы перед входным именем «data».

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