私は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
。
これの何が問題なのか分かりますか?どんな助けでも大歓迎です。どうもありがとう。