我一直在关注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',
),
),
);
答案 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将被正确处理。
希望这会有所帮助:)
斯托