1

私が解決できない問題は、zend Framework 2 のルートです。

私はzend スケルトン アプリケーションを使用します。zf1のようにコントローラーと適切なビューファイルを作成しました。そして、ブラウザ アプリケーションから制御された作成を開こうとすると、エイリアスを追加するまで 404 リターン コードが返されます。

<?php
return array(
    'di' => array(
        'instance' => array(
            'alias' => array (
                'login' => 'Application\Controller\LoginController',
                'logout' => 'Application\Controller\LogoutController',
                'user' => 'Application\Controller\UserController',
            ),

そして、すべてのコントローラ ファイルをエイリアス配列に追加する必要があります。

エイリアスを追加せずにデフォルトルートを作成するには?

4

1 に答える 1

2

インスタンスエイリアスはルートでの使用を意図したものではありませんが、DI に役立つ「ショートカット」です。たとえば、モジュール イベントで呼び出されるメソッド内にいるとします。

// get the di locator
$di = $e->getTarget()->getLocator();
// get instance by alias
$loginController = $di->get('login');

代わりに、ルート ルールを設定するには、構成ファイルで次のようにします。

// Setup for router and routes
return array(
    'di' => array(
        'instance' => array(

        ....

            // Setup for router and routes
        'Zend\Mvc\Router\RouteStack' => array(
            'parameters' => array(
                'routes' => array(
                    'default' => array(
                        'type'    => 'Zend\Mvc\Router\Http\Segment',
                        'options' => array(
                            'route'    => '/[:controller[/:action]]',
                            'constraints' => array(
                                'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
                                'action'     => '[a-zA-Z][a-zA-Z0-9_-]*',
                            ),
                            'defaults' => array(
                                'controller' => 'Application\Controller\IndexController',
                                'action'     => 'index',
                            ),
                        ),
                    ),
                    'home' => array(
                        'type' => 'Zend\Mvc\Router\Http\Literal',
                        'options' => array(
                            'route'    => '/',
                            'defaults' => array(
                                'controller' => 'Application\Controller\IndexController',
                                'action'     => 'index',
                            ),
                        ),
                    ),
                ),
            ),
        ),

Akrabat の入門チュートリアルをお勧めします

于 2012-05-17T15:59:05.470 に答える