Zend Framework 2 でルーティングを実行しようとしていますが、うまくいきません。
スケルトン アプリケーションの基本は機能しているので、User という新しいモジュールと次のコードをファイル \module\User\config\module.config.php に追加しました。
'controllers' => array(
'invokables' => array(
'User\Controller\User' => 'User\Controller\UserController',
),
),
'router' => array(
'routes' => array(
'login' => array(
'type' => 'Literal',
'options' => array(
'route' => '/login',
'defaults' => array(
'__NAMESPACE__' => 'User\Controller',
'controller' => 'User',
'action' => 'login',
),
),
),
'user_create' => array(
'type' => 'Literal',
'options' => array(
'route' => '/user/create',
'defaults' => array(
'__NAMESPACE__' => 'User\Controller',
'controller' => 'User',
'action' => 'create',
),
),
),
),
),
最初のルート (/login) にアクセスしようとすると、機能します。
しかし、2 番目のルート (/user/create) ではエラーが発生します。
ファイル:
F:\www\ZendVendas\library\Zend\Mvc\Router\Http\TreeRouteStack.php:313
メッセージ:
Route with name "create" not found
コントローラー名なしでルートを作成すると、次のように機能します。
'create' => array(
'type' => 'Literal',
'options' => array(
'route' => '/create',
'defaults' => array(
'__NAMESPACE__' => 'User\Controller',
'controller' => 'User',
'action' => 'create',
),
),
),
しかし、ルートは「/user/create」であり、「/create」ではありません。
多くのトピックを検索しましたが、どこが間違っているのかわかりません。どんな助けにも感謝します;)
編集:@Jurianの提案で調整されたコード
'router' => array(
'routes' => array(
'user' => array(
'type' => 'Literal',
'options' => array(
'route' => '/user',
'defaults' => array(
'controller' => 'User\Controller\User',
'action' => 'profile',
),
),
'child_routes' => array(
'login' => array(
'type' => 'Literal',
'options' => array(
'route' => '/login',
'defaults' => array(
'controller' => 'User\Controller\User',
'action' => 'login',
),
),
),
'create' => array(
'type' => 'Literal',
'options' => array(
'route' => '/create',
'defaults' => array(
'controller' => 'User\Controller\User',
'action' => 'create',
),
),
),
),
),
),
),