【问题标题】:Retrieving POST data with CakePHP without formhelper使用没有 formhelper 的 CakePHP 检索 POST 数据
【发布时间】:2017-04-29 17:14:48
【问题描述】:

我正在尝试将 POST 变量传递给我的一个控制器,但是我是从静态页面执行此操作的(我知道,这不是最干净和最有效的处理方式。但是为了学习...)。如果在没有 FormHelper 表单的情况下发送 POST 数据,我如何在控制器中读取该 POST 变量?

我使用 jQuery ajax 发布数据,因此没有 CakePHP 原生的“FormHelper”。

这有意义吗?让我知道是否需要详细说明。感谢您提供的任何帮助:)

【问题讨论】:

    标签: php cakephp post


    【解决方案1】:

    您应该能够通过以下方式访问数据:

    $this->params['form']['YOUR_VARIABLE_NAME']
    

    如果您遵循 FormHelper 使用的命名约定并将您的输入字段命名为 data[ModelName][FieldName],那么您可以照常访问数据:

    $this->data['ModelName']['FieldName']
    

    【讨论】:

      【解决方案2】:

      别忘了 Cake 只是 PHP。

      class BazController extends AppController {
      
          function foo() {
              $foo = $_POST['bar'];
              $this->set('foobar', $foo);
          }
      
      }
      

      完全有效。但我会按照@dhofstet 的建议做,因为它更“蛋糕”。

      【讨论】:

        【解决方案3】:

        您应该能够通过以下方式访问表单发布数据:

        对于 CakePHP 2.x

        if ($this->request->is('post')) {
            pr($this->request->data);
        }
        

        对于 CakePHP 3.4.x

        if ($this->request->is('post')) {
            pr($this->request->getData());
        }
        

        如需进一步参考,请阅读手册。自己解决这个问题要容易得多,也更好。

        Documentation for CakePHP 2.x

        Documentation for CakePHP 3

        【讨论】:

          【解决方案4】:

          对于 CakePHP 2.x 是

          $this->request->data['ModelName']['field_name'];
          

          $_POST['data']['ModelName']['field_name'];
          

          推荐第一个选项。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-07-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多