を得る:私は、現在のコントローラに到達する関数で、現在のコントローラ
$front = Zend_Controller_Front::getInstance();
これが唯一のハンドラではなく、現在のコントローラを提供します。
コードを機能からコントローラの内部に変更しました。 と私はのgetInstanceからもらっハンドラと、この
var_dump(get_class($front), get_class($this));
両方彼らの起源を尋ねた私が取得:
string 'Zend_Controller_Front' (length=21)
string 'IndexController' (length=15)
私は本当のフロントコントローラを開始した到達できますか?
この関数は1兆回使用されるため、パラメータとして渡すことはできません。
アクションヘルパーで$front = Zend_Controller_Front::getInstance()
$request = $front->getRequest();
$module = ucfirst($request->getModuleName());
$controller = ucfirst($request->getControllerName());
$instance = new $module . '_' . $controller . 'Controller';
:と
私はグローバル変数を定義しましたが、IndexController initで$ thisで設定しました。 – nerkn
アクションコントローラのインスタンスを取得することは、一般的には良い考えではありません。アクションコントローラにあるコードがアプリケーションやライブラリのどこかで利用できるようにする必要がある場合、そのコードはライブラリの中にあるはずです。 takehinによる2番目の答えには、これも記載されています。 –
リンクを作成する関数でコントローラに定義された変数が必要です。(href)この関数をクラスにバインドする必要がありますか? – nerkn