如何使用zend 2路由将页面路由到站点的根目录

时间:2014-10-08 11:54:21

标签: routing zend-framework2

我正在使用zend框架2.我想在网站的根目录上放置几个页面。即

www.exampleSite.com/siteMap

我知道如何在子目录中获取页面。

  

www.exampleSite.com/support/helppage

'router' => array(
        'routes' => array(
            'supportsec' => array(
                'type' => 'segment',
                'options' => array(
                    'route' => '/support[/:action][/:id]',
                    'constraints' => array(
                        'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        'id' => '[0-9]+',
                    ),
                    'defaults' => array(
                        'controller' => 'support\Controller\supportController',
                        'action' => 'index',
                    ),
                   ),
          ), ),  ),

我也知道如何路由到主页,即

 'home' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route'    => '/',
                    'defaults' => array(
                        'controller' => 'Members\Controller\HomeController',
                        'action'     => 'index',
                    ),
                ),
            ),

混淆是如何将其他页面放在网站的根目录中。

提前感谢您的帮助

我按照@exlord的建议将其放在我的模块中。

'my-static-page-1' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route'    => '/my-static-page-1',
                    'defaults' => array(
                        'controller' => 'Members\Controller\HomeController',
                        'action'     => 'my-static-page-1',
                    ),
                ),
            ),

我现在可以拥有一个类似的页面:

www.exampleSite.com/examplepage

但路由只是将路由发送到

的索引

'成员\控制器\ HomeController的'

然而,我需要将路由发送到examplepage的动作函数,即

examplepageAction(){

}

我需要做什么?

1 个答案:

答案 0 :(得分:1)

对于动态页面名称:

 'my-static-pages' => array(
                'type' => 'Zend\Mvc\Router\Http\Segment',
                'options' => array(
                    'route'    => '/[:my-page]',
                    'defaults' => array(
                        'controller' => 'Members\Controller\HomeController',
                        'action'     => 'index',
                    ),
                ),
            ),

注意这与归属路由相同,并且它使用索引操作,因此在索引操作中,您应该检查my-page参数是否已设置并相应地执行操作。

或者您可以为每个页面定义静态路由:

 'my-static-page-1' => array(
                'type' => 'Zend\Mvc\Router\Http\Literal',
                'options' => array(
                    'route'    => '/my-static-page-1',
                    'defaults' => array(
                        'controller' => 'Members\Controller\HomeController',
                        'action'     => 'my-static-page-1',
                    ),
                ),
            ),

更新:

public function indexAction()
{
    $page = $this->params()->fromRoute('my-page', false);
    if($page){
        //return a view model according to the $page parameter            
    }

    //return the original index action view model
}