如何在Phalcon Micro框架中访问POST参数

时间:2014-05-29 16:04:56

标签: php phalcon

我正在尝试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

谷歌没有帮助。

我想要做的就是访问POST参数。我怎么能这样做?

4 个答案:

答案 0 :(得分:4)

$app确定某个对象......您是否正确使用了关闭?

//Adds a new robot
$app->post('/api/robots', function() use ($app) {

    $robot = $app->request->getJsonRawBody();
    // ...

注意use声明!

答案 1 :(得分:2)

我知道这个问题很老,但我自己也在寻找解决方案。我在这里发布,以便它可以帮助未来的用户。

原始提问者想知道如何访问POST数据,正确的方法是在应用程序的请求对象上调用getPost,使用NO参数。

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

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

答案 2 :(得分:0)

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

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

$data = json_decode($payload);

答案 3 :(得分:0)

我下载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"]}