我在 ZF3 中,使用 zend-mvc-skeleton 并尝试配置一个通用路由,该路由将匹配尽可能多的 URL,以便能够创建新的控制器(当然包括操作方法),并立即拥有它们可用的。
文档中描述的常用方法是编写与控制器和操作匹配的路由(与 ZF2 相同)。
这是我的module.config.php
namespace Application;
use Zend\Router\Http\Literal;
use Zend\Router\Http\Segment;
use Zend\ServiceManager\Factory\InvokableFactory;
return [
'router' => [
'routes' => [
'home' => [
'type' => Literal::class,
'options' => [
'route' => '/',
'defaults' => [
'controller' => Controller\IndexController::class,
'action' => 'index',
],
],
],
'default' => [
'type' => Segment::class,
'options' => [
'route' => '/application[/:controller[/:action]]',
'defaults' => [
'controller' => Controller\IndexController::class,
'action' => 'index',
],
'constraints' => [
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
],
],
],
],
],
'controllers' => [/* ... */],
'view_manager' => [/* ... */],
],
它就像一个魅力http://localhost/
并http://localhost/application
调用文件内的类的indexAction()
函数 。IndexController
/module/Application/src/IndexController.php
但是,当我尝试fooAction()
在同一个控制器(即 IndexController)中获取该功能时,它不起作用。它没有正确解决http://localhost/application/foo
。我收到以下错误:
A 404 error occurred
Page not found.
The requested controller could not be mapped to an existing controller class.
Controller:
foo (resolves to invalid controller class or alias: foo)
No Exception available
如果我尝试http://localhost/bar/foo
在fooAction()
.barController
你知道这有什么问题吗?任何帮助将不胜感激。非常感谢。