0

我的一个助手中有这段代码

 $front = Zend_Controller_Front::getInstance();
 $request = $front->getRequest();  
 print_r($request->getParams());

结果

Array
(
    [controller] => packaging
    [action] => index
    [package] => 87
    [module] => default
    [groupid] => 32
    [packageid] => 87
    [conceptrel] => 161
    [always_same] => 
    [getparts] => 1
)

这里有时 packageid 来自 POST,有时来自 url(getparam)..我怎么知道它是 post 还是 param?

4

4 回答 4

1

我得到了答案

$front = Zend_Controller_Front::getInstance();
$request = $front->getRequest();
print_r($request->getUserParams()); //only user params not post,get..etc
于 2012-05-31T08:05:56.547 回答
1

回答您提出的问题:

我怎么知道它是 post 还是 param ?

24.4.2.3。确定请求方法 getMethod() 允许您确定用于请求当前资源的 HTTP 请求方法。此外,还有多种方法可让您在询问是否已发出特定类型的请求时获得布尔响应:

是获取()

是邮政()

isPut()

是删除()

是头()

是选项()

所以这会产生如下代码:

if ($this->getRequest()->isPost()){
    //do some stuff
}
于 2012-05-31T09:29:49.397 回答
0

您可以先检查请求是否已发布$request->isPost();

至于起源,您也可以为此编写一个助手。中的getParams方法Zend_Controller_Request_Http首先返回用户参数,然后是 GET,然后是 POST。当名称匹配时,最后一个是首选。您的助手必须考虑到这一点。

于 2012-05-31T08:02:37.183 回答
0

你也可以这样做:

$this->getRequest()->setParamSources(array('_POST'));

并且您的$_POST数组将始终等于getParams();

于 2012-05-31T09:20:08.633 回答