2

私は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

これの何が問題なのか分かりますか?どんな助けでも大歓迎です。どうもありがとう。

4

2 に答える 2