Zend Framework 2 - 路由中的斜杠

时间:2014-08-25 06:59:00

标签: php zend-framework2 directory-structure

Havin在Zend模块中遵循结构

模块名称

  • 测试
    • 配置
    • SRC
    • 视图
      • 布局
      • 测试
        • 索引
          • index.phtml
        • 登录
          • index.phtml
        • 寄存器
          • index.phtml
    • Module.php

现在,当访问网站时,例如登录文件,它将如下http://justsite.something.com/login

问题需要更改为http://justsite.something.com/login/,因为我在登录文件夹中添加了另一个文件夹索引,并且像这样推出了index.phtml文件

  • 登录
    • 索引
      • index.phtml

但这似乎不起作用。我应该更改LoginController.php以使其工作吗?

module.confing.php

'router' => array(
    'routes' => array(
        'test' => array(
            'type' => 'Literal',
            'options' => array(
                'route' => '/test',
                'defaults' => array(
                    '__NAMESPACE__' =>'Test\Controller',
                    'controller'    => 'Index',
                    'action'        => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes'  => array(
                'default' => array(
                    'type' => 'Segment',
                    'options' => array(
                        'route' =>
                        '/[:controller[/:action]]',
                        'constraints' => array(
                            'controller' =>
                            '[a-zA-Z][a-zA-Z0-9_-]*',
                            'action' =>
                            '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(),
                    ),
                ),
            ),
        ),
        'login' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/login/', // PUT HERE WHATEVER YOU WANT
                'defaults' => array(  // AND MAP THAT URL TO CONTROLLER/ACTION
                    '__NAMESPACE__' =>'Test\Controller',                    
                    'controller' => 'Login',
                    'action'     => 'index',
                ),
            ),
        ),
    ),
),

已修复刚添加

'may_terminate' => true,
            'child_routes'  => array(
                'default' => array(
                    'type' => 'Segment',
                    'options' => array(
                        'route' =>
                        '/[:controller[/:action]/]',

2 个答案:

答案 0 :(得分:1)

就像@tasmaniski写道,你不需要对LoginController或其他任何东西进行更改,所有这些都归结为你的路由配置。您并不是唯一一个希望"在他的路线here you can read how you can achieve this中跟踪斜杠" 的人。

显然你需要把它放在[]

之间
'route'    => '/[:controller[/[:action[/]]]]',

希望能为你解决这个问题。

注意 有人建议使用重写规则,我认为这也值得一提

答案 1 :(得分:0)

无论你的forlder结构是什么。您需要在配置文件module.config.php,“routes”部分进行更改。

您只需要在末尾添加带斜杠的“route”值并将其映射到控制器/操作。

'routes' => array(
    'login' => array(
        'type'    => 'Zend\Mvc\Router\Http\Literal',
        'options' => array(
            'route'    => '/login/', // PUT HERE WHATEVER YOU WANT
            'defaults' => array(     // AND MAP THAT URL TO CONTROLLER/ACTION
                'controller' => 'Application\Controller\Login',
                'action'     => 'index',
            ),
        ),
    ),
)