0

私は以前にこのような質問をしましたが、これは違うと思います (それは単なる一般的な質問でした)。

Zend_Navigation を実装しました。

メニューについては、DB テーブルを使用してメニュー項目を格納し、Array-s で再帰を実行してメニュー項目のツリーを取得しました。

このすべてのアクションは、Menu という私のモジュールで行われます。内部には次のものがあります。

Menu -- 
       Controllers --
                     IndexController.php
       Models--
               DbTable--
                        Menu.php
       Bootstrap.php

インデックスコントローラー内に私は持っていますfunction menuGenerator($menu_id)

したがって、Zend_Navigation のチュートリアルに従って、アプリケーションのブートストラップでメニューが初期化されます。

アプリケーションのブートストラップ内の私の関数は次のようになります:

public function _initMenus() {

    $menuArray = new Menu_IndexController();
    $outArray = $menuArray->menuGenerator(1);

    $mainmenu = new Zend_Navigation($outArray);

    $this->view->navigation($mainmenu);     

}

エラーが表示されます:

Fatal error: Class 'Menu_IndexController' not found in D:\Server\xampp\htdocs\project\application\Bootstrap.php on line 8

それで、正しく動作させるにはどうすればよいですか?

PS 一度に 2 つの新しいメニューを開始することは可能ですか? 例: 1. メイン メニュー 2. フッター メニュー (記事へのリンクがあればいいのに) が必要です

4

2 に答える 2

0

コントローラーのアクションが依存する多くのブートストラップ タスクがあるため、ブートストラップ中にコントローラー メソッドを呼び出すことはかなり珍しいことです。あなたの場合、コントローラーメソッドmenuGenerator()は実際にはactionではないため、おそらく問題にはなりません。

とはいえ、menuGenerator()メソッドを独自のクラスに移動することはまだ十分に珍しいことです。次に、Bootstrap とコントローラーの両方でその操作を呼び出します。

于 2013-02-12T05:39:06.710 に答える
0

デフォルトでは、Zend Framework のオートローダーは、他のコンポーネント (モデル、ビュー ヘルパー、フォームなど) をロードするのと同じ方法でコントローラーをオートロードしないため、PHP はクラスが見つからないというエラーをスローします。これを回避する最も簡単な方法は、コントローラーを明示的に Bootstrap.php に含めることです。以下が機能するはずです。

public function _initMenus() {

    require_once('./Controllers/IndexController.php');
    $menuArray = new Menu_IndexController();
    $outArray = $menuArray->menuGenerator(1);

    $mainmenu = new Zend_Navigation($outArray);

    $this->view->navigation($mainmenu);     

}
于 2013-02-11T21:17:19.417 に答える