4

私の zf アプリケーションには、3 つのモジュールがあります。

  • 申請者
  • 会社
  • 管理者

そして、私のapplication.iniで、デフォルトのモジュールを選択しました

resources.frontController.defaultModule = "applicant"

そのため、一部のコントローラー クラスは次のように命名されます。

class IndexController extends Zend_Controller_Action /* in Applicant Module */
class Company_IndexController extends Zend_Controller_Action
class Admin_IndexController extends Zend_Controller_Action

申請者は私のデフォルトのモジュールなので、モジュール名をクラス名のプレフィックスとして使用する必要はありません。

プレフィックス付きの方法を使用して、既定のモジュールでクラスに名前を付けるにはどうすればよいですか?

これらのクラス名を使用したい

class Applicant_IndexController extends Zend_Controller_Action
class Company_IndexController extends Zend_Controller_Action
class Admin_IndexController extends Zend_Controller_Action

しかし、私はこのエラーが発生しています:

Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (error)' in ZendFramework-1.11.6/library/Zend/Controller/Dispatcher/Standard.php on line 248
4

2 に答える 2

5

お気づきのとおり、デフォルトモジュールのコントローラー名にはプレフィックス(例:)は必要ありませんが、デフォルトSomeController以外のモジュールのコントローラーにはプレフィックス(例:)が必要ですAdmin_SomeController

モジュールベースのアプリでは、個人的には、すべてのコントローラーにモジュール名のプレフィックスを付ける方が一貫していると思います。これは問題として提出され、フロントコントローラー設定を追加することでバージョン1.5で明らかに修正されましたprefixDefaultModule

したがって、にapplication/configs/application.ini、次を追加できます。

resources.frontController.prefixDefaultModule = true

私はいつもそれを使っていて、それは素晴らしいと思います。;-)

于 2011-06-16T08:32:27.233 に答える
2

ZF のドキュメントを参照してください: Dispatcher

1.5.0 の時点で、フロント コントローラーまたはディスパッチャーのいずれかで prefixDefaultModule を TRUE として指定することで、これを行うことができます。

application.iniで設定できます...

resources.frontController.prefixDefaultModule = true

.. または他の場所から:

Zend_Controller_Front::getInstance()->setParam('prefixDefaultModule', true);
于 2011-06-16T07:40:44.450 に答える