我正在尝试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参数。我怎么能这样做?
答案 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"]}