2

我正在学习ZF2。

是否可以像 Zf1 那样在没有路由器的情况下运行应用程序?我们需要为每个控制器定义路由器吗?

例子:

在 ZF1 中:"admin/index/index"显示为"module/controller/action"

IN ZF2:"admin/index/index"显示为"router[/:controller][/:action]"

请帮助我消除我的疑虑。

4

1 回答 1

0

请把这个

return array(
    // routes
    'router' => array(
        'routes' => array(
            'album' => array(
                'type'    => 'Literal',
                'options' => array(
                    'route'    => '/album',
                    'defaults' => array(
                        'controller'    => 'album\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__' => 'album\Controller',
                            ),
                        ),
                    ),
                ),
            ),
        ),
    ),    
    'controllers' => array(
        'invokables' => array(
            'album\Controller\Test' => 'Album\Controller\TestController',
        ),
    ),

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

您需要在可调用对象中手动添加控制器名称或通过抽象工厂调用

'controllers' => array(
   'invokables' => array(
      'album\Controller\Test' => 'Album\Controller\TestController',
   ),
),

通过抽象工厂自动调用控制器

参考

于 2013-05-28T06:57:51.870 回答