4

現在のコントローラーに到達したい関数で:

$front = Zend_Controller_Front::getInstance();

これはハンドラーのみを提供し、現在のコントローラーは提供しません。

コードを関数からコントローラー内部に変更しました。getInstanceから取得したハンドラーとこれの両方の起源を尋ねました

var_dump(get_class($front), get_class($this));

私は得る:

string 'Zend_Controller_Front' (length=21)
string 'IndexController' (length=15)

実際に開始されたフロントコントローラーに到達するにはどうすればよいですか?

この関数は何兆回も使用されているため、パラメーターとして渡すことはできません。

4

2 に答える 2

7
Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
于 2010-12-03T12:43:34.827 に答える
1

可能:

$front = Zend_Controller_Front::getInstance()
$request = $front->getRequest();
$module = ucfirst($request->getModuleName());
$controller = ucfirst($request->getControllerName());

$instance = new $module . '_' . $controller . 'Controller';

アクションヘルパー:

$instance = $this->getActionController();

しかし、これはおそらくそれがあなたのアーキテクチャに何か問題があることを意味します。
必要な共通コードをアクションヘルパー、サービス、またはモデルに移動する必要があります。

于 2010-12-03T13:18:27.980 に答える