6

Moduleに新しいコントローラーを追加し、URLを介して呼び出すには、どのファイルで変更を加える必要がありますか。

他の構成ファイルを変更せずに、新しいコントローラーファイルを追加し、URLを介して呼び出す方法はありますか?

コントローラファイルを追加または編集するたびに構成ファイルを変更するのは非常に面倒です。

4

3 に答える 3

9

ダニエルが「あなたの目的を満たす一致するルートがあることを確認してください...」で言ったことに少し説明を加えています。私の目的のために、module/Application/src/Application/Controller/IndexController.php および module/Application/src/Application/Controller/ProfileController.php へのルートに対応しようとしましたが、ProfileController への解決に苦労しました。また、ZF2 が 1 つのモジュールに複数のコントローラーを収容できるかどうかも明確ではありませんでした。私は確かにそうしなければならないと思ったし、そうしている!上記の 2 つのコントローラーを使用して、module/Application/config/module.config.php 内の「ルーター」配列を作成した方法を次に示します。

'router' => array(
    'routes' => array(
        'home' => array(
            'type' => 'Zend\Mvc\Router\Http\Literal',
            'options' => array(
                'route'    => '/',
                'defaults' => array(
                    'controller' => 'Application\Controller\Index',
                    'action'     => 'index',
                ),
            ),
        ),
        'application' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/application',
                'defaults' => array(
                    '__NAMESPACE__' => 'Application\Controller',
                    'controller'    => 'Index',
                    'action'        => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'default' => array(
                    'type'    => '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(
                        ),
                    ),
                ),
            ),
        ),

        'profile' => array(
            'type' => 'literal',
            'options' => array(
                'route' => '/profile',
                'defaults' => array(
                    '__NAMESPACE__' => 'Application\Controller',
                    'controller'    => 'Profile',
                    'action'        => 'index',
                ),
            ),
        ),
    ),
),

また、これは、成功した後、modules.config.php で私の「コントローラー」呼び出し可能ファイルがどのように見えるかです。

'controllers' => array(
    'invokables' => array(
        'Application\Controller\Index' => 'Application\Controller\IndexController',
        'Application\Controller\Profile' => 'Application\Controller\ProfileController'
    ),
),
于 2013-01-04T12:14:44.350 に答える
4

新しいコントローラーを作成するには、少なくとも

  • コントローラ クラスを作成する
  • 目的に合った一致するルートがあることを確認してください (既存のルートを使用することも、特別な目的のために新しいルートを作成することもできます)。
  • controllers.invokablesモジュールの にエントリを作成しますmodule.config.php

この 3 つの簡単な手順を回避する方法はありません。module.config.phpコントローラーを追加するときにを適応させることが問題になる理由がわかりません-それが構成ファイルの目的です。開く、保存する、閉じるを含めて、これには約 10 分かかります。10〜15秒。何百ものコントローラを作成するつもりはありませんよね?

于 2012-09-20T07:23:51.357 に答える