2

ブートストラップファイルのコントローラの名前に基づいて追加の設定ファイルをロードしたいので、ブートストラップ(Zend Framework 1.1)でコントローラの名前を取得する必要があります。これは可能ですか?ブートストラップでコントローラ名を取得

$front = Zend_Controller_Front::getInstance(); 
$controller = $front->getRequest()->getControllerName(); 

しかし、これは動作しません:

私が試した

Fatal error: Call to a member function getControllerName() on a non-object in [path]\application\Bootstrap.php on line 10 

答えて

4

フロントコントローラーをブートストラップして使用できるようにする必要があります。

$bootstrap->bootstrap('frontController'); 
$front = $bootstrap->frontController; 
$controller = $front->getRequest()->getControllerName(); 
4

あなたはフロントコントローラに使用するために

例をブートストラップにより、最初の要求オブジェクトを初期化する必要がありますブートストラップクラス:

$this->bootstrap('frontController'); 
$request = $this->getResource('frontController')->getRequest(); 
$controller = $request->getControllerName(); 

あなたはブートストラップファイルでリクエストオブジェクトを使用すべきではありません。

これを実現するには、フロントコントローラプラグインとその方法を使用することをお勧めします。

もっと複雑なロジックがある場合や、コントローラごとにさらに便利なメソッドが必要な場合は、Zend_Controller_Actionクラスを拡張することができます。

+2

+1。コントローラプラグインは私が行く方法です。 –

+0

私はSongosのソリューションを追加し、もう少し理解して書きました。 –

+0

申し訳ありませんが、元の答えは自分でURLを解析することでしたので、特に全回答を完全に変更した場合は、アップアップすることはできません。受け入れられた答えよりも多くの人々がこれを上回ったと信じられない。 –

3

また、このようにそれを行うことができます。

 $router = new Zend_Controller_Router_Rewrite(); 
     $request = new Zend_Controller_Request_Http(); 
     $router->route($request); 
     $request->getActionName(); 
関連する問題