在Zend Studio中创建新模块(Zend Framework 2)

时间:2013-03-31 14:17:38

标签: php zend-framework2 zend-studio

我一直在关注Zend(http://www.youtube.com/watch?feature=player_embedded&v=EerB9bTvqrY)的教程,但是当我在项目中添加新模块时,我无法导航到它,本教程中的说明是否错误?

基本上,当我在Zend Studio中将一个新模块添加到我的Zend Framework项目时,我无法导航到它,我的新模块被称为“交易”。我导航到localhost / dealproject / deals,我得到错误404.当导航到localhost / dealproject /时,它正确加载zend骨架应用程序页面。

感谢您的帮助。

module.config.php

<?php
return array(
'controllers' => array(
    'invokables' => array(
        'Deals\Controller\Deals' => 'Deals\Controller\DealsController',
    ),
),
'router' => array(
    'routes' => array(
        'deals' => array(
            'type'    => 'Literal',
            'options' => array(
                // Change this to something specific to your module
                'route'    => '/deals',
                'defaults' => array(
                    // Change this value to reflect the namespace in which
                    // the controllers for your module are found
                    '__NAMESPACE__' => 'Deals\Controller',
                    'controller'    => 'Deals',
                    'action'        => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                // This route is a sane default when developing a module;
                // as you solidify the routes for your module, however,
                // you may want to remove it and replace it with more
                // specific routes.
                '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(
                        ),
                    ),
                ),
            ),
        ),
    ),
),
'view_manager' => array(
    'template_path_stack' => array(
        'Deals' => __DIR__ . '/../view',
    ),
),

);

2 个答案:

答案 0 :(得分:1)

确保您已在~/config/application.config.php

中启用了该模块
'modules' => array(
    'Application',
    'Deals',
),

答案 1 :(得分:0)

对我来说,路线配置看起来是正确的,它应该显示结果。我注意到,ZF2应用程序的基本URL(localhost/dealproject/)位于域根目录的子目录中。您可能知道所有请求都映射到应用程序的index.php(~/public/index.php)。这是通过.htaccess文件中的某些配置(在同一目录中)完成的。

在示例网址www.example.com/blog中,如果blog作为www.example.com根目录下的文件夹不存在,则会获得404 Page not found。但是,如果没有找到目录,则ZF2的.htaccess会使apache调用域根中的index.php(假设您使用ZendSkeletonApplication)。

现在,既然你的index.php不在域根(localhost/)中,而在localhost/dealproject/中,你的.htaccess也是(我假设)在localhost/dealproject/中,当你call localhost/dealproject/deals apache正在查找目录dealproject/deals,因为在localhost中没有.htaccess来准备必要的配置。

我建议你将dealproject文件夹设为localhost的根目录。这样您就可以调用这样的路由:localhost/deals和.htaccess,index.php将被正确处理。

希望这会有所帮助:)

斯托