Magento getParam v $ _GET

时间:2012-11-23 18:03:28

标签: php magento

任何人都可以在功能上和善恶方面解释这些差异,其中一个应该优先于另一个:

$getParam = Mage::app()->getRequest()->getParam('getparam');

v

$getParam = $_GET['getparam'];

2 个答案:

答案 0 :(得分:39)

两者之间存在显着差异。 $_GET只是一个数组,如$_POST。但是,调用Mage::app()->getRequest()->getParam('param_name')将允许您访问GET和POST (此处不包括DELETE和PUT) - 请参阅以下代码:

lib/Zend/Controller/Request/Http.php

public function getParam($key, $default = null)
{
    $keyName = (null !== ($alias = $this->getAlias($key))) ? $alias : $key;

    $paramSources = $this->getParamSources();
    if (isset($this->_params[$keyName])) {
        return $this->_params[$keyName];
    } elseif (in_array('_GET', $paramSources) && (isset($_GET[$keyName]))) {
        return $_GET[$keyName];
    } elseif (in_array('_POST', $paramSources) && (isset($_POST[$keyName]))) {
        return $_POST[$keyName];
    }

    return $default;
}

此外,如果系统使用Mage::app()->getRequest()->setParam()设置其他参数,则可通过getParam()函数访问该参数。在Magento中,您希望始终使用getParam()

答案 1 :(得分:6)

Mage::app()->getRequest()->getParam('getparam');

如果使用GET,POST(不确定DELETE,PUT ...)请求发送,则会返回'getparam'。没有使用Magento但是如果有通过路由发送的参数。我希望通过该功能也可以访问它们。

$_GET仅包含通过GET发送的参数

$_POST仅包含通过POST发送的参数