私は現在ZF2で作業しており、助けが必要です。残念ながら、モジュールが1つしかない場合のルートを設定する例しか見つかりません。または、この例には、動的セグメントルートを含むアプリケーションモジュールがまだ含まれています。アプリケーションモジュールを完全に削除し、自分のモジュールだけですべてのルーティングを構成するようにしたい。
CLFrontend、CLBackendの2つのモジュールがあります
私のアプリケーション構成は次のようになります。
return array(
'modules' => array(
'ClFrontend',
'ClBackend'
),
'module_listener_options' => array(
'config_glob_paths' => array(
'config/autoload/{,*.}{global,local}.php',
),
'module_paths' => array(
'./module',
'./vendor',
),
),
);
自分の2つのモジュールをそこに登録したいと思います。ルーティングは次のようになります。
/の下にあるものはすべて、フロントエンドモジュールの抜粋/バックエンドに移動する必要があります
/-> IndexController-> indexaction
/ controller1-> Controller1Controller-> indexaction
/ controller1 / add-> Controller1Controller-> addaction
/ controller1 / add / 1 /-> COntroller1Controller-> addaction-> item 1
これで、/backendの下にあるすべてのものがバックエンドモジュールにルーティングされます。
/ backend-> BackendIndexController-> indexaction
/ backend / controller1-> BackendController1Controller-> indexaction
/ backend / controller1 / add-> BackendController1Controller-> addaction
/ backend / controller1 / add / 1 /-> BackendCOntroller1Controller-> addaction-> item 1
そして、私はそのルートを固定し、そのようなセグメントルートのようなものではないことを定義したいと思います:
:module /:controller /:action
私は次のようなものになりたい
/
/ controller1 / [:action [/:id]]
と
/ backend
/ backend / backendcontroller / [:action [/:id]]
Myapproachは次のとおりです。問題は、バックエンドルートでさえフロントエンドモジュールと一致しているように見えることです。私は404を取得します
要求されたURLはルーティングによって一致しませんでした。
または
致命的なエラー:クラス'ClBackend \ Controller\AnswerController'が/に見つかりません/ * / ** / * ** / checklistenassistent3 / vendor / ZF2 / library / Zend / ServiceManager / AbstractPluginManager.php(177行目)
CLFrontend / config / module.config.php
return array(
'controllers' => array(
'invokables' => array(
'ClFrontend\Controller\Index' => 'ClFrontend\Controller\IndexController',
'ClFrontend\Controller\User' => 'ClFrontend\Controller\UserController',
),
),
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'ClFrontend\Controller\Index',
'action' => 'index',
),
),
),
),
),
'view_manager' => array(
'display_not_found_reason' => true,
'display_exceptions' => true,
'doctype' => 'HTML5',
'not_found_template' => 'error/404',
'exception_template' => 'error/index',
'template_map' => array(
'layout/layout' => __DIR__ . '/../view/cl-frontend/layout/layout.phtml',
'application/index/index' => __DIR__ . '/../view/cl-frontend/index/index.phtml',
'error/404' => __DIR__ . '/../view/cl-frontend/error/404.phtml',
'error/index' => __DIR__ . '/../view/cl-frontend/error/index.phtml',
),
'template_path_stack' => array(
__DIR__ . '/../view',
),
),
);
CLBackend / config / module.config.php
return array(
'controllers' => array(
'invokables' => array(
'ClBackend\Controller\Answer' => 'ClBackend\Controller\AnswerController',
'ClBackend\Controller\AnswerGroup' => 'ClBackend\Controller\AnswerGroupController',
'ClBackend\Controller\Category' => 'ClBackend\Controller\CategoryController',
'ClBackend\Controller\Checklist' => 'ClBackend\Controller\ChecklistController',
'ClBackend\Controller\Index' => 'ClBackend\Controller\IndexController',
'ClBackend\Controller\Question' => 'ClBackend\Controller\QuestionController',
'ClBackend\Controller\User' => 'ClBackend\Controller\UserController',
),
),
'router' => array(
'routes' => array(
'backend' => array(
'type' => 'Zend\Mvc\Router\Http\Literal',
'options' => array(
'route' => '/backend',
'defaults' => array(
'controller' => 'ClBackend\Controller\Index',
'action' => 'index',
),
'may_terminate' => true
),
'child_routes' => array (
'answer' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/answer/:action/:id',
'defaults' => array(
'controller' => 'ClBackend\Controller\Answer',
'action' => 'index',
),
),
),
'answergroup' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/answergroup/:action/:id',
'defaults' => array(
'controller' => 'ClBackend\Controller\AnswerGroup',
'action' => 'index',
),
),
),
'category' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/category/:action/:id',
'defaults' => array(
'controller' => 'ClBackend\Controller\Category',
'action' => 'index',
),
),
),
'checklist' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/checklist/:action/:id',
'defaults' => array(
'controller' => 'ClBackend\Controller\Checklist',
'action' => 'index',
),
),
),
'question' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/question/:action/:id',
'defaults' => array(
'controller' => 'ClBackend\Controller\Question',
'action' => 'index',
),
),
),
'user' => array(
'type' => 'Zend\Mvc\Router\Http\Segment',
'options' => array(
'route' => '/user/:action[/:id]',
'defaults' => array(
'controller' => 'ClBackend\Controller\User',
'action' => 'index',
),
),
),
),
),
),
),
);