如何从控制器内部访问路由参数?

时间:2012-07-24 08:36:46

标签: php zend-framework2

这是路线...

'panel-list' => array (
    'type' => 'Segment',
    'options' => array (
        'route'    => '/panel-list/:pageId[/:action]',
        'constraints' => array (
            'pageId' => '[a-z0-9_-]+'
        ),
        'defaults' => array (
            'action' => 'index',
            'controller' => 'PanelList',
            'site' => null
        ),
    ),
),

我需要在这里放些什么......

public function indexAction()
{
    echo ???????
}

回显pageId?

3 个答案:

答案 0 :(得分:3)

在zf2的beta5中,它变得更容易使用,因此您不需要记住每种不同类型的不同语法。我cite

  

新的“Params”控制器插件。允许检索查询,发布,         cookie,标头和路由参数。用法是         $ this-> params() - > fromQuery($ name,$ default)。

因此,要从路线获取参数,您需要做的就是。

$param = $this->params()->fromRoute('pageId');

这也可以通过查询($ _GET)和帖子($ _POST)等来完成,如引文所示。

$param = $this->params()->fromQuery('pageId');
// will match someurl?pageId=33

$param = $this->params()->fromPost('pageId');
// will match something with the name pageId from a form.

// You can also set a default value, if it's empty.
$param = $this->params()->fromRoute('key', 'defaultvalue');

示例:

$param = $this->params()->fromQuery('pageId', 55);

如果url是someurl?pageId = 33 $ param将保持值33。 如果网址没有?pageId $ param将保留值55

答案 1 :(得分:2)

你试过吗

$this->getRequest()->getParam('pageId')

答案 2 :(得分:2)

$这 - > getEvent() - > getRouteMatch() - > getParam( 'PAGEID');