【问题标题】:Why is cakephp form input stored in $this->data and POST data stored in $this->params['form']?为什么 cakephp 表单输入存储在 $this->data 中,而 POST 数据存储在 $this->params['form'] 中?
【发布时间】:2010-05-03 13:55:55
【问题描述】:

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

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

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

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

ps 我正在使用 cakephp 1.3

【问题讨论】:

    标签: rest cakephp forms


    【解决方案1】:

    我认为您的 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]" ... />
    

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

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

    【讨论】:

    • 感谢 travis 的回答,我确实确认 cake 将数据名称添加到生成的表单源中(我无法更改)。但我没有发现所有帖子数据总是放在 $this->params 中。所以我仍然坚持检查控制器:-(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    相关资源
    最近更新 更多