【问题标题】:How to access POST parameters in the Phalcon Micro framework如何在 Phalcon Micro 框架中访问 POST 参数
【发布时间】:2014-05-29 16:04:55
【问题描述】:

我正在试用 Phalcon 微框架。 tutorial on this page 只提到了以下访问请求数据的方式:

$app->request->getJsonRawBody();

我真的只是想访问标准的 POST 参数,但由于我在教程中没有看到,我尝试在请求正文中传递一些 JSON。结果我得到了一个 500 错误,并且在我的日志中:

PHP Fatal error:  Call to a member function getJsonRawBody() on a non-object in /Users/tom/Dropbox/Code/microphalcon/index.php on line 8
PHP Stack trace:
PHP   1. {main}() /Users/tom/Dropbox/Code/microphalcon/index.php:0
PHP   2. Phalcon\Mvc\Micro->handle() /Users/tom/Dropbox/Code/microphalcon/index.php:44
PHP   3. {closure:/Users/tom/Dropbox/Code/microphalcon/index.php:6-11}() /Users/tom/Dropbox/Code/microphalcon/index.php:44

Google 没有提供帮助。

我要做的就是访问 POST 参数。我该怎么做?

【问题讨论】:

    标签: php phalcon


    【解决方案1】:

    您的 $app 不是对象...您正确使用闭包吗?

    //Adds a new robot
    $app->post('/api/robots', function() use ($app) {
    
        $robot = $app->request->getJsonRawBody();
        // ...
    

    注意use声明!

    【讨论】:

      【解决方案2】:

      我知道这个问题很老,但我自己正在寻找解决方案。我将其发布在这里,以便对未来的用户有所帮助。

      原提问者想知道如何访问 POST 数据,正确的做法是在应用的请求对象上调用 getPost,不带任何参数。

      $myPostArray = $app->request->getPost();
      

      这将返回 PHP 的 POST 数组的内容。

      【讨论】:

        【解决方案3】:

        这是一个通用的答案,但试试这个。

        $payload = file_get_contents('php://input');
        
        $data = json_decode($payload);
        

        【讨论】:

          【解决方案4】:

          我下载 PhalconRest 示例来创建 RESTful API。这是我为获取 POST 数据所做的。

          public function post()
          {
              $request = $this->di->get('request');
              $data = $request->getJsonRawBody();
              return array($data->{'test'});
          }
          

          测试:

          curl -i -X POST -d {\"test\":\"le\"} http://localhost/app/test
          

          结果如下:

          HTTP/1.1 200 OK
          Date: Sun, 14 Sep 2014 03:32:45 GMT
          Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.5.16 mod_ssl/2.2.26 OpenSSL/0.9.8y
          X-Powered-By: PHP/5.5.16
          E-Tag: 32b0f42ce7fa825050bfbc0fd3e2f7d0
          Content-Length: 57
          Content-Type: application/json
          
          {"_meta":{"status":"SUCCESS","count":1},"records":["le"]}
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-11-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-12-24
            • 1970-01-01
            相关资源
            最近更新 更多