为什么cakephp表格输入存储在$ this->数据和POST数据存储在$ this-> params ['form']中?

时间:2010-05-03 13:55:55

标签: rest cakephp forms

cakephp rest教程说发布数据应该在$ this->数据中,但我发现它不是,而是在$ this-> params ['form']

但是,在视图中使用cakephp表单助手时,数据位于$ this->数据中。

我是否必须检查控制器中的两个位置?

这似乎有点浪费额外的代码。数据是否出现在一个地方,无论是来自休息休息请求者还是Cakephp表单帖子?

ps我正在使用cakephp 1.3

1 个答案:

答案 0 :(得分:5)

我认为HTML中的输入名称可能不正确或未正确生成(如果您使用的是表单助手)。仔细检查您的HTML以确保(在浏览器中查看源代码)。

存储在Controller :: data变量中的数据来自POST值,其中输入的名称以数据开头。因此,此输入标记的值为$ this-> data ['Anything'] ['Something']:

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

使用表单助手时,请执行以下操作:

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

表单助手非常聪明,可以知道您正在使用哪个模型(我认为因为它在您调用$ form-&gt; create('Modelname')时设置了一个属性)。所以上面的(PHP /表单助手)示例将输出:

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

当然,有一些警告(Modelname.Something必须是相应数据库表中存在的字段),但您可以通过查看手册了解更多信息。

最后,我相信$ this-&gt; params ['form']属性具有所有POSTed值,无论您是否在输入名称前加上“data”。