【问题标题】:Form Data Not Being Sent From View To Controller表单数据未从视图发送到控制器
【发布时间】:2019-08-22 14:41:55
【问题描述】:

所以我试图从 cake 的表单构建器中的表单发送一些数据,但由于某种原因,当我打印出 $this->data$this->request->data 时,提交的数据都没有显示

我尝试自己创建表单并使用 cake 的表单生成器,我需要通过 POST 发送这些数据。如果我将其作为 GET 参数发送,数据就会显示出来。

view.ctp

echo $this->Form->create(null, array('action' => 'downloadbgc', 'type' => 'get'));
echo $this->Form->input('userId', ['type' => 'text' , 'id' => 'userId', 'name' => 'userId', 'value' => $user->id]);
echo $this->Form->input('product_id', ['type' => 'hidden' , 'id' => 'product_id', 'name' => 'product_id', 'value' => $user->product_id]);
echo $this->Form->submit('Download PDF', array('class' => 'btn btn-icon btn-primary', 'title' => 'Download'));
 echo $this->Form->end();

controller.php

...
public function downloadbgc() {
    $this->autoRender = false;

    print_r("Data: ");
    print_r($this->data); die();
    }
}
...

打印出来时,我得到Data: Array() 而不是Array('userId' => X, 'product_id' => Y) 我很肯定这些值不为空,因为它们打印到控制台。

【问题讨论】:

  • 如果你使用 POST 应该可以工作,但如果你使用 GET 就不行。请确保在进行更改时刷新表单视图(不仅仅是/controller/downloadbgc/),并且view()downloadbgc() 在同一个控制器中。

标签: forms cakephp-2.x


【解决方案1】:

正确使用FormHelper的create():

echo $this->Form->create(false, ['url' => 'downloadbgc']);
echo $this->Form->input('userId', ['type' => 'text' , 'id' => 'userId', 'name' => 'userId', 'value' => 123]);
echo $this->Form->input('product_id', ['type' => 'hidden' , 'id' => 'product_id', 'name' => 'product_id', 'value' => 4456]);
echo $this->Form->submit('Download PDF', array('class' => 'btn btn-icon btn-primary', 'title' => 'Download'));
echo $this->Form->end();

Docs 一样指出create() 方法可以将模型作为第一个参数或false,如果您想在没有模型的情况下访问数据。也使用 url 选项,因为 action 已弃用

然后您可以在您的 Controller 中使用 $this->request->data 访问您的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 2014-03-28
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多