7

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',
                        ),
                    ),
                ),
            ),
        ),

    ),
),
4

2 に答える 2

0

私は自分が間違っていたことを発見しました。

ビュー ファイルの 1 つに、 route を指す URL 関数がありました/create。Zend が無効なルートを含むファイルを示してくれると助かりますが、間違いを見つけたら、すべてが機能するようになりました。

'router' => array(
    'routes' => array(

        'login' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/login',
                'defaults' => array(
                    'controller' => 'User\Controller\User',
                    'action'     => 'login',
                ),
            ),
        ),

        'logout' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/logout',
                'defaults' => array(
                    'controller' => 'User\Controller\User',
                    'action'     => 'logout',
                ),
            ),
        ),

        'user' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/user',
                'defaults' => array(
                    'controller' => 'User\Controller\User',
                    'action'     => 'profile',
                ),
            ),
            'child_routes' => array(
                'create' => array(
                    'type' => 'Literal',
                    'options' => array(
                        'route'    => '/create',
                        'defaults' => array(
                            'controller' => 'User\Controller\User',
                            'action'     => 'create',
                        ),
                    ),
                ),
                'edit' => array(
                    'type' => 'Literal',
                    'options' => array(
                        'route'    => '/edit',
                        'defaults' => array(
                            'controller' => 'User\Controller\User',
                            'action'     => 'edit',
                        ),
                    ),
                ),
            ),
        ),      

    ),
),

お手伝いありがとう!

于 2013-10-04T01:52:32.200 に答える