2014-12-02 99 views
1

我在我的MVC框架中实现了Alto路由器,并且它使用URI完美地路由获取请求。使用AltoRouter获取POST数据PHP

它已经到了我需要开始处理表单和POST数据的地步,所以我设置了一个处理POST请求的路由,请求起作用,并且我接受了请求后的路由,例如domain.com/contact/send/

不幸的是,我不会在params数组中获得POST数据。

我不确定是否让我自己对路由器是否应该这样做感到困惑。

如果路由器不应该处理获取POST数据,你能指出我如何理想地处理POST数据的正确方向吗?

如果路由器应该处理POST数据,家到我看不到它在比赛的params数组中?

这里是POST请求的一个片段:

$router->map('POST','/contact/send/,'contact#send', 'contact_form_send'); 
$match = $router->match() 

任何帮助将非常感激,感谢

回答

0

这里是我如何做到这一点。

$router->map('POST', '/companies/create', function() { 
    if isset($_POST['company'])) { 
     createCompany($_POST['company']); 
    } 
}); 

希望它有助于

1

如果你看一看的AltoRouter源,params is extracted from the request URL,所以不会包含任何POST数据。此参数主要由AltoRouter用于其反向路由功能,但您可以直接使用它,而不是直接访问$_GET

如果您需要访问POST数据,您将不得不通过使用$_POST$_REQUEST superglobal直接从请求中获取。

请注意,AltoRouter will overwrite $_REQUEST when you call match因此它的行为可能与预期不同,因为它不包含cookie。

1

我通过PHP获取POST数据://输入

// update a document 
$router->map('POST', '/docs', function() { 
    $rc = new DocumentController(); 
    $data = json_decode(file_get_contents('php://input')); 
    $data = (array)$data; 
    $rc->updateDocument($data); 
});