オーバーレイ/ライトボックス/toplayerに表示されるアップロードフォームがあります。複数のコントローラーの複数のアクションでのみ使用できます。
このフォームを作成するには、最大6行のコードが必要であり、そこからパラメータを取得するにはREQUESTオブジェクトにアクセスする必要があります。
必要なアクションでフォームを簡単に作成できるように、このコードをどこに配置すればよいですか。
オーバーレイ/ライトボックス/toplayerに表示されるアップロードフォームがあります。複数のコントローラーの複数のアクションでのみ使用できます。
このフォームを作成するには、最大6行のコードが必要であり、そこからパラメータを取得するにはREQUESTオブジェクトにアクセスする必要があります。
必要なアクションでフォームを簡単に作成できるように、このコードをどこに配置すればよいですか。
この機能をアクションヘルパーに入れます。アクションヘルパーは、任意のコントローラーアクションから直接呼び出すことができ(遅延ロードされます)、アクションヘルパーは、要求オブジェクトやビューなど、コントローラーアクションが実行するすべてのものにアクセスできます。
例:
<?php
class My_Action_Helper_FormCreator extends Zend_Controller_Action_Helper_Abstract {
public function direct($options = null)
{
$request = $this->getRequest();
$view = $this->getActionController()->view;
$form = new Application_Form_SomeForm();
// set form options here...
$view->form = $form; // optional - assign form directly to the view
return $form;
}
}
そのコードをlibrary/My/Action/Helper/FormCreator.php
(または必要に応じてクラス名を変更して)配置します。
次に、アクションで、次のように呼び出します。
$form = $this->_helper->FormCreator();
最後に、このアクションヘルパーの場所をヘルパーブローカーに通知する必要があります。これを行うには、これをブートストラップに追加します。
protected function _initActionHelpers() {
Zend_Controller_Action_HelperBroker::addPrefix('My_Action_Helper');
}
お役に立てば幸いです。