我正在寻找有关 ZF2 路由器配置的帮助。
我想在开发环境中将多个控制器添加到单个模块中,尽管最终必须弄清楚如何指定特定的路由。
为此,我目前正在尝试使用 MVC 快速入门文档中指定的通用 module.config。但是,这似乎不像 ZF2 文档所建议的那样执行。
http://framework.zend.com/manual/2.0/en/modules/zend.mvc.quick-start.html
文档说明:
“ZendSkeletonApplication 附带了一个“默认路由”,它可能会让您执行此操作。该路由基本上需要“/{module}/{controller}/{action}”,它允许您指定:“/zend-user/ hello/world”。我们将在这里创建一个路由,主要是为了说明目的,因为创建显式路由是推荐的做法。”
但是,控制器渲染 /landlord、/landlord/home/index,而不是 /landlord/sandbox/index。Home 和沙盒是控制器。沙盒已根据命名约定“SandboxController”进行命名。我的看法是,文档中代码的 child_routes 部分可能需要一些我错过的修改。
在沙箱实例中,我在 404 错误页面上收到此错误。
Landlord\Controller\Sandbox(解析为无效的控制器类或别名:Landlord\Controller\Sandbox)
我尝试将 'Landlord\Controller\Sandbox' => 'Landlord\Controller\SandboxController', 添加到可调用对象中,但这会产生错误。
我的控制器如下所列:
return array(
'controllers' => array(
'invokables' => array(
'Landlord\Controller\Home' => 'Landlord\Controller\HomeController',
),
),
'router' => array(
'routes' => array(
'landlord' => array(
'type' => 'Literal',
'options' => array(
// Change this to something specific to your module
'route' => '/landlord',
'defaults' => array(
// Change this value to reflect the namespace in which
// the controllers for your module are found
'__NAMESPACE__' => 'Landlord\Controller',
'controller' => 'home',
'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(
'landlord' => __DIR__ . '/../view',
),
),
);
如果有一种简单的方法可以直接配置 url,这也会很有用,或者一个非常好的教程,这也将不胜感激。