多くの場合、コントローラーまたはアクション ヘルパーのコンテキスト外で URL ヘルパーを使用したい場合は、自分でヘルパーの新しいインスタンスを作成するだけです。
URL ヘルパーを取得して使用するには、次のコードを使用できるはずです。
$urlHelper = new Zend_Controller_Action_Helper_Url();
$url = $urlHelper->url(array('controller' => 'foo',
'action' => 'bar',
'module' => 'mod'));
このエラーが発生した理由はわかりませんが、ヘルパーがまだフロント コントローラーに登録されていない場合 (アプリケーション ディスパッチの早い段階でこれを呼び出している可能性がありますか?)、getStaticHelper()
代わりに を使用してみてくださいgetExistingHelper()
:
$urlHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('url');
URL ヘルパーがまだプラグイン ローダーに登録されていない場合は、登録してロードします。
ヘルパーブローカーのドキュメントから:
ヘルパー ブローカーからヘルパーを取得するための 2 つの静的メソッドもありgetExistingHelper()
ますgetStaticHelper()
。
getExistingHelper()
ヘルパー ブローカーによって以前に呼び出されたか、明示的に登録されている場合にのみ、ヘルパーを取得します。そうでない場合は例外がスローされます。getStaticHelper()
と同じ
getExistingHelper()
ことを行いますが、ヘルパー スタックにまだ登録されていない場合は、ヘルパーのインスタンス化を試みます。getStaticHelper()
設定したいヘルパーを取得するのに適しています。