【问题标题】:In CakePHP, why would $this->params['form'] be empty if I've just posted a form?在 CakePHP 中,如果我刚刚发布了一个表单,为什么 $this->params['form'] 会为空?
【发布时间】:2010-09-22 15:58:49
【问题描述】:

使用 CakePHP 1.3,我发布了一个正确填写 $this->data 的表单。根据the docs,似乎$this->params['form'] 也应该填充一些信息,但它只是一个空数组。 有什么特别的原因吗?

表单是使用Form Helper构建的,如下...

一些相关代码:

$default_form_create_options = array(
    'inputDefaults' => array(
        'label'=>false, 
        'div'=>false
    )
); 

echo $form->create('Preappform', $default_form_create_options);
// --- snip, a bunch of form elements created via $form->input()
echo $form->end(array('label'=>'Send This Form »', 'class'=>'submit-button', 'escape'=>false));

我知道$this->data 中提供了表单数据,所以这可能只是一个文档/好奇心问题。如果是这样……我的错。

【问题讨论】:

  • 没有相关的支持代码很难说。
  • 我建议发布您的代码并执行 var_dump($this->params);
  • 好吧,当我有时间的时候,我一定会把相当大的现有表格压缩成一个较小的测试用例,以显示正在发生的事情。我确实转储了 $this->params,它在 'form' 中有一个空数组。
  • 您使用 $this->params['form'] 而不是 $this->data 的任何特殊原因?
  • @Travis:因为文档提到“表单”包含通过表单提交的数据。我目前正在使用“数据”,但想知道“表单”实际上是做什么用的,我猜。

标签: php cakephp cakephp-1.3


【解决方案1】:

只是为了咯咯笑,试试$this->params['data']。我不知道为什么,但由于某种原因,它为我显示了表单数据。

文档有冲突的数据,您可以在此处看到 http://book.cakephp.org/view/972/data。我猜如果你使用 FormHelper 它将显示在 $this->data 中,如果你不使用 FormHelper 它将显示在 $this->params['form']

请注意,如果您使用 FormHelper,元素的名称将为 data['Model']['element_name'],如果您只是手动创建表单,则可以将其命名为“element_name”。通过执行后者,我相信它会将其放入 params['form'] 而不是 $this->data

【讨论】:

  • 如果是这样,那么它解释了为什么我最近讨厌 CakePHP 文档。
  • 是的,$_POST = $this->params['form']; 使用 FormHelper 时除外。您应该在应用程序中使用 FormHelper 以使事情变得更容易,因此在控制器中使用 $this->data 是要走的路。但是,如果人们从外部源向您的控制器操作 POST(即您正在提供 Web 服务),您可以通过检查 $this->params['form'] 来分离关注点。
【解决方案2】:

我在使用 CakePHP 1.3 时也遇到了同样的问题。后来我通过使用 $this->params['data'] 解决了这个问题。但是我有一些问题,我是 cakephp 的新手,并使用手册作为参考,手册似乎根本没有更新,在搜索这个问题时,我发现它在早期版本中运行良好,并且在 1.2 之后,Cakephp 中根本没有它。有没有 CakePHP 专家来澄清这件事?

【讨论】:

  • 在 StackOverflow 上,在您的帖子中只回答原始问题是一种很好的语气。为了自己澄清一些事情,你最好把它放在 cmets 中(到你的帖子或原始帖子中)或提出独立的问题
  • 另外我刚刚注意到 OP 很旧并且已经接受了答案。而且由于 SO 上没有人在答案中寻找新问题,因此极不可能有人会在此线程中为您提供帮助。 “提出新问题”按钮位于页面右上角
【解决方案3】:

不一定与 Cake 相关,但我遇到问题时的答案是:如果您在 POST 中包含文件上传,请仔细检查您上传的文件是否大于指定的限制在您的php.ini 文件中。

【讨论】:

    猜你喜欢
    • 2011-03-15
    • 1970-01-01
    • 2023-03-26
    • 2021-06-07
    • 2012-10-22
    • 2021-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多