当我在Zend中调用下面的路由器时:
coupon/index/search/cat/1/page/1/x/111/y/222
当我得到控制器内部时$this->_params,我得到一个数组:
array(
'module' => 'coupon',
'controller' => 'index',
'action' => 'search',
'cat' => '1',
'page' => '1',
'x' => '111',
'y' => '222'
)
Run Code Online (Sandbox Code Playgroud)
但我只想得到:
array(
'cat' => '1',
'page' => '1',
'x' => '111',
'y' => '222'
)
Run Code Online (Sandbox Code Playgroud)
你能不能告诉我一个方法来获得所有params刚刚的action?
Lud*_*wig 10
恕我直言,这更优雅,包括动作,控制器和方法键的变化.
$request = $this->getRequest();
$diffArray = array(
$request->getActionKey(),
$request->getControllerKey(),
$request->getModuleKey()
);
$params = array_diff_key(
$request->getUserParams(),
array_flip($diffArray)
);
Run Code Online (Sandbox Code Playgroud)
据我所知,你总是得到参数列表中的控制器,动作和模块,因为它是默认的一部分.你可以做这样的事情从你得到的数组中删除三个:
$url_params = $this->getRequest()->getUserParams();
if(isset($url_params['controller']))
unset($url_params['controller']);
if(isset($url_params['action']))
unset($url_params['action']);
if (isset($url_params['module']))
unset($url_params['module']);
Run Code Online (Sandbox Code Playgroud)
或者,因为您不希望每次需要列表时都这样做,所以创建一个帮助程序来为您执行此操作,如下所示:
class Helper_Myparams extends Zend_Controller_Action_Helper_Abstract
{
public $params;
public function __construct()
{
$request = Zend_Controller_Front::getInstance()->getRequest();
$this->params = $request->getParams();
}
public function myparams()
{
if(isset($this->params['controller']))
unset($this->params['controller']);
if(isset($this->params['action']))
unset($this->params['action']);
if (isset($this->params['module']))
unset($this->params['module']);
return $this->params;
}
public function direct()
{
return $this->myparams();
}
}
Run Code Online (Sandbox Code Playgroud)
您只需从控制器中调用此方法即可获取列表:
$this->_helper->myparams();
Run Code Online (Sandbox Code Playgroud)
所以例如使用url:
http://127.0.0.1/testing/urls/cat/1/page/1/x/111/y/222
Run Code Online (Sandbox Code Playgroud)
和代码:
echo "<pre>";
print_r($this->_helper->myparams());
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)
我打印了以下数组:
Array
(
[cat] => 1
[page] => 1
[x] => 111
[y] => 222
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10711 次 |
| 最近记录: |