自动惯例为基础的Zend框架2模块中路由 - 可能吗?(Automatic convention-b

2019-10-29 11:56发布

我想了解所有必要的配置让我的路由中的Zend框架的工作2,我不禁在想,如果我提出这个超过必要的复杂。

我工作的一个简单的应用程序,将遵循一个非常简单的约定:

/:模块/:控制器/:动作

我已经创建和有线我的模块,“SVC”(以下简称“服务)”。 然后我创建了一个第二控制器,该“ClientsController”,而我不能让路由通过我的请求,例如,/ SVC /客户/列表ClientsController ::的listAction()。

当我通过数百个配置的行涉水,在深度嵌套数组,我想 - isn't有某种方式来只是有我的网址的默认映射/:模块/:控制器/:动作?

感谢您的任何援助。 我要离开的Zend框架2快速启动 ,其中走到我通过创建一个新的模块,然后添加控制器到该模块。 但是,当我试图第二控制器添加到该模块,我绊倒路由过来。

更新:我没有这样过赶在第一时间,但显然这应该是Zend框架骨架应用的功能。 从快速入门指南:

ZendSkeletonApplication附带了一个“默认路由”,将有可能让你这个动作。 这条路基本上预计“/ {模块} / {控制器} / {行动}”,它允许你指定这样的:“/ Zend的用户/你好/世界”

这正是我想要的! 但我不能得到它的工作。

它列出了一个不完整的module.config.php,与关于把“其他配置”这里的底部的评论。 我试图找出什么是“其他配置”是,彼时这一点:

return array(
    'svc' => array(
        'type'    => 'Literal',
        'options' => array(
            'route'    => '/svc',
            'defaults' => array(
                'controller'    => 'svc\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(
                    ),
                ),
            ),
        ),
    ),
    'controllers' => array(
        'invokables' => array(
            'svc\Controller\Clients' => 'svc\Controller\ClientsController',
        ),
    ),

    'view_manager' => array(
        'template_path_stack' => array(
            'album' => __DIR__ . '/../view',
        ),
    ),
);

JFYI,这里是我的控制器的样子。

namespace svc\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;

class ClientsController extends AbstractActionController {

    public function indexAction() {
        return new ViewModel();
    }

    public function anotherAction(){

        return new ViewModel();
    }
}

我的路线不工作。 我得到“路径找不到”当我试图拉起我的任何路线。

Answer 1:

它列出了一个不完整的module.config.php,与关于把“其他配置”这里的底部的评论。 我试图找出什么是“其他配置”是,彼时这一点:

如果你真的module.config.php看起来像那么它不会工作, routes是在定义的路由数组router键,你的配置不包含这样的规范,尝试用这种替代它

return array(
    // routes
    'router' => array(
        'routes' => array(
            'svc' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/svc',
                    'defaults' => array(
                        'controller'    => 'svc\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(
                                 // add the default namespace for :controllers in this route
                                 '__NAMESPACE__' => 'svc\Controller',
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),    
    'controllers' => array(
        'invokables' => array(
            'svc\Controller\Clients' => 'svc\Controller\ClientsController',
        ),
    ),

    'view_manager' => array(
        'template_path_stack' => array(
            'album' => __DIR__ . '/../view',
        ),
    ),
);


文章来源: Automatic convention-based routing within a module in Zend Framework 2--possible?