Zend framework2 zend framework 2添加新控制器

Zend framework2 zend framework 2添加新控制器,zend-framework2,Zend Framework2,为了在模块中添加新的控制器并通过URL调用它,我们需要在哪些文件中进行更改 有没有一种方法可以让我们添加一个新的控制器文件,并通过url调用它,而无需更改任何其他配置文件 因为在每次添加或编辑控制器文件时更改配置文件将非常繁琐。要创建新控制器,您至少需要 创建控制器类 确保您有一条符合您的目的的匹配路线(您可以选择现有路线,也可以为特殊目的创建一条新路线) 在模块的module.config.php中创建一个controllers.invokables条目 没有办法绕过这三个简单的步骤。我不

为了在模块中添加新的控制器并通过URL调用它,我们需要在哪些文件中进行更改

有没有一种方法可以让我们添加一个新的控制器文件,并通过url调用它,而无需更改任何其他配置文件


因为在每次添加或编辑控制器文件时更改配置文件将非常繁琐。

要创建新控制器,您至少需要

  • 创建控制器类
  • 确保您有一条符合您的目的的匹配路线(您可以选择现有路线,也可以为特殊目的创建一条新路线)
  • 在模块的
    module.config.php
    中创建一个
    controllers.invokables
    条目

没有办法绕过这三个简单的步骤。我不明白为什么在添加控制器时修改
module.config.php
会有问题——这就是配置文件的用途。包括打开、保存和关闭,这大约需要10-15秒。您不会创建数百个控制器,是吗?

我要对Daniel在“确保您有一条符合您目的的匹配路线…”中所说的话进行一点澄清。出于我的目的,我试图调整到module/Application/src/Application/Controller/IndexController.php和module/Application/src/Application/Controller/ProfileController.php的路由,但是我很难解决ProfileController的任何问题。还不清楚ZF2是否可以在单个模块中容纳多个控制器。我想肯定是的,的确如此!鉴于上述两个控制器,这就是我如何在module/Application/config/module.config.php中构建我的“路由器”数组的方法

'router' => array(
    'routes' => array(
        'home' => array(
            'type' => 'Zend\Mvc\Router\Http\Literal',
            'options' => array(
                'route'    => '/',
                'defaults' => array(
                    'controller' => 'Application\Controller\Index',
                    'action'     => 'index',
                ),
            ),
        ),
        'application' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/application',
                'defaults' => array(
                    '__NAMESPACE__' => 'Application\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(
                        ),
                    ),
                ),
            ),
        ),

        'profile' => array(
            'type' => 'literal',
            'options' => array(
                'route' => '/profile',
                'defaults' => array(
                    '__NAMESPACE__' => 'Application\Controller',
                    'controller'    => 'Profile',
                    'action'        => 'index',
                ),
            ),
        ),
    ),
),
这也是我的“控制器”可调用项在modules.config.php中成功后的样子

'controllers' => array(
    'invokables' => array(
        'Application\Controller\Index' => 'Application\Controller\IndexController',
        'Application\Controller\Profile' => 'Application\Controller\ProfileController'
    ),
),

来自Zend框架2参考

我们向应用程序通知我们希望在应用程序中使用的控制器 应用这是为了防止有人请求任何服务 ServiceManager在试图破坏应用程序时知道。这个 dispatcher使用一个特殊的作用域容器,该容器只会 专门向其注册的控制器,作为 可调用类或通过工厂调用

src:

添加控制器与布线无关,但切线方向除外 由于开发人员希望能够在 网址。这是一个安全问题,因为我们对待控制器 作为服务

这是(a)明确控制器是什么的努力 可用,并且(b)默认情况下是安全的


正如Matthew Weier O'Phinney所说。

我不会这么说。我没有使用过ZF1,但是ZF2有很多好的方面,这是ZF1所没有的(根据其他人的意见)。使用ZF1已经五年了。zf2-非常非常好:)只要您熟悉OOP和MVC,zf2就比ZF1更易于使用。只要你只看模块和设置。这需要对配置是如何完成的有相当多的了解,但这正是网络研讨会和文档的目的:)在大规模应用程序中,是的,我将创建数百个控制器。想想ERP。很多很多运动部件。我已经使用ZF1好几年了,ZF2在很多方面都更好。Zend框架的重点是企业系统。灵活性和简单性之间存在着相反的关系。如果您想要一些新手友好且易于学习的东西,请查看RubyonRails。然而,如果你要制作一个每天有2000多人使用的大型web系统,Zend框架已经涵盖了你。Zend 2真的不太可行。。。我不应该为了增加一个控制器而经历那样的困难。就我的意见。@user1815615,完美的解释:)+1