Zend clear Параметры запроса
Я просто хотел спросить, почему следующее внутри метода действия Zend_Controller_Action:
$request = $this->getRequest();
$params = $request->getParams();
var_dump($params);
foreach ($params as $key => &$value) {
$value = null;
}
var_dump($params);
$request->setParams($params);
var_dump($request->getParams());
производит это:
array
'controller' => string 'bug' (length=3)
'action' => string 'edit' (length=4)
'id' => string '210' (length=3)
'module' => string 'default' (length=7)
'author' => string 'test2' (length=5)
array
'controller' => null
'action' => null
'id' => null
'module' => null
'author' => null
array
'author' => string 'test2' (length=5)
Разве переменная 'author' тоже не должна быть очищена?
Заранее спасибо!
2 ответа
Решение
Метод getParams показан ниже. Что происходит, вы очищаете встроенные параметры (контроллер, действие и т. Д.), Но метод всегда возвращает переменные GET и POST.
/**
* Retrieve an array of parameters
*
* Retrieves a merged array of parameters, with precedence of userland
* params (see {@link setParam()}), $_GET, $_POST (i.e., values in the
* userland params will take precedence over all others).
*
* @return array
*/
public function getParams()
{
$return = $this->_params;
$paramSources = $this->getParamSources();
if (in_array('_GET', $paramSources)
&& isset($_GET)
&& is_array($_GET)
) {
$return += $_GET;
}
if (in_array('_POST', $paramSources)
&& isset($_POST)
&& is_array($_POST)
) {
$return += $_POST;
}
return $return;
}
Для очистки параметров вы можете просто позвонить:
$request->clearParams();