Php Zend Framework 2-路由中的尾部斜杠

Php Zend Framework 2-路由中的尾部斜杠,php,zend-framework2,directory-structure,Php,Zend Framework2,Directory Structure,Zend模块中的Havin遵循以下结构 模块名称 试验 配置 src 看法 布局 试验 索引 index.phtml 登录 index.phtml 登记册 index.phtml Module.php 现在,当访问网站,例如登录文件时,它将如下所示 问题需要更改为,因为我在登录文件夹中添加了另一个文件夹索引,并将index.phtml文件如下所示 登录 索引 index.phtml 但这似乎不起作用。我应该在LoginController.php中进行更改

Zend模块中的Havin遵循以下结构

模块名称

  • 试验
    • 配置
    • src
    • 看法
      • 布局
      • 试验
        • 索引
          • index.phtml
        • 登录
          • index.phtml
        • 登记册
          • index.phtml
    • Module.php
现在,当访问网站,例如登录文件时,它将如下所示

问题需要更改为,因为我在登录文件夹中添加了另一个文件夹索引,并将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]/]',

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

您只需输入“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',
            ),
        ),
    ),
)

就像@tasmaniski写的那样,您不需要对LoginController或其他任何东西进行更改,所有这些都取决于您的路由配置。你不是唯一一个想要在他的路线上“拖尾斜杠”的人

显然你需要把它放在[]之间

'route'    => '/[:controller[/[:action[/]]]]',
希望你能解决这个问题


注意有些人建议对此使用重写规则,我认为这可能也值得一提。

为什么您需要最后带有斜杠的路径,而不需要任何字符串?这就是项目的要求。我认为您已经给出了我所需要的,但当我在上面的module.confing.php部分中进行更改时,它不起作用。嗯。。尝试设置其他类似“route”=>“/dummy test/”的选项,并告诉您在浏览器中键入时出现了什么错误??您的IDEA很好,但所需的全部内容都在固定块中。不管怎样,谢谢。:)在那个固定的街区里,就是我说的。要在末尾添加路线段斜杠…请查看主帖子中我的固定块。@user3904245解决方案中的星号是否使控制器和操作成为可选的?我只是将它们添加以显示我添加的内容。我将消除误解。请注意,要使其工作,路由必须为
'type'=>'Segment'