我正在尝试理解使我的路由在Zend Framework 2中运行所需的所有配置,我不禁想知道我是否使这个更复杂而不必要。
我正在开发一个简单的应用程序,它遵循一个非常简单的约定:
/:模块/:控制器/:动作
我已经创建并连接了我的模块,“svc”(“服务”的缩写)。然后我创建了第二个控制器,“ClientsController”,我无法通过我的请求将路由传递给例如/ svc / clients / list到ClientsController :: listAction()。
当我涉及数百行配置时,在深度嵌套的数组中,我在想 - 没有办法将我的URL默认映射到/:module /:controller /:行动?
感谢您的帮助。我要离开Zend Framework 2 Quick Start,它引导我创建一个新模块,然后向该模块添加一个控制器。但是当我尝试将第二个控制器添加到该模块时,我正在绊倒路由。
更新:我第一次没有抓到这个,但显然这应该是Zend Framework Skeleton应用程序的一个功能。从快速入门指南:
ZendSkeletonApplication随附“默认路由” 让你做这个动作。这条路线基本上是期待 “/ {module} / {controller} / {action}”,允许您指定: “/ Zend的用户/你好/世界”
这正是我想要的!但我无法让它发挥作用。
它列出了一个不完整的module.config.php,底部有关于将“其他配置”置于此处的注释。我试图找出“其他配置”是什么,并结束了这个:
return array(
'svc' => array(
'type' => 'Literal',
'options' => array(
'route' => '/svc',
'defaults' => array(
'controller' => 'svc\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(
),
),
),
),
),
'controllers' => array(
'invokables' => array(
'svc\Controller\Clients' => 'svc\Controller\ClientsController',
),
),
'view_manager' => array(
'template_path_stack' => array(
'album' => __DIR__ . '/../view',
),
),
);
JFYI,这是我的控制器的样子。
namespace svc\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class ClientsController extends AbstractActionController {
public function indexAction() {
return new ViewModel();
}
public function anotherAction(){
return new ViewModel();
}
}
我的路线不起作用。当我试图拉起我的任何路线时,我得到“找不到路线”。
答案 0 :(得分:0)
它列出了一个不完整的module.config.php,底部有关于将“其他配置”置于此处的注释。我试图找出“其他配置”是什么,并结束了这个:
如果你的module.config.php看起来真的那么它就行不通了,routes
是router
键中定义的一系列路由,你的配置不包含这样的规范,请尝试替换它与此
return array(
// routes
'router' => array(
'routes' => array(
'svc' => array(
'type' => 'Literal',
'options' => array(
'route' => '/svc',
'defaults' => array(
'controller' => 'svc\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__' => 'svc\Controller',
),
),
),
),
),
),
),
'controllers' => array(
'invokables' => array(
'svc\Controller\Clients' => 'svc\Controller\ClientsController',
),
),
'view_manager' => array(
'template_path_stack' => array(
'album' => __DIR__ . '/../view',
),
),
);