Form メソッド内で Request オブジェクトにアクセスするには? Form メソッド内で ActionHelper を使用してコントローラのリクエスト オブジェクトにアクセスすることは何とか可能だと思いますが、そのようなタスクのために新しいクラスを作成するのは過剰なようです。
または、どうにかしてコントローラーのリクエストを Zend_Registry に保存し、フォームのレジストリ項目にアクセスする必要がありますか?
Form メソッド内で Request オブジェクトにアクセスするには? Form メソッド内で ActionHelper を使用してコントローラのリクエスト オブジェクトにアクセスすることは何とか可能だと思いますが、そのようなタスクのために新しいクラスを作成するのは過剰なようです。
または、どうにかしてコントローラーのリクエストを Zend_Registry に保存し、フォームのレジストリ項目にアクセスする必要がありますか?
$request = Zend_Controller_Front::getInstance()->getRequest()
?
レジストリ方式(1)とシングルトンフロントコントローラー(2)の両方にアクセスすることはできますが、両方の方式にはいくつかの大きな欠点がありZend_Controller_FrontますZend_Registry。Zend_Controller_Request_Abstract。
// (1)
// in bootstrap e.g.
Zend_Registry::set('request', Zend_Controller_Front::getInstance()->getRequest());
// in form method
$request = Zend_Registry::get('request');
// (2)
//in form method
$request = Zend_Controller_Front::getInstance()->getRequest();
最善の方法は、フォームのコンストラクターまたはフォームのセッターを介してリクエストオブジェクトをフォームに挿入するか、リクエストパラメーターを配列として挿入することです。
// form class (constructor-injection presumed)
class My_Form extends Zend_Form
{
/**
* @var Zend_Controller_Request_Abstract
*/
protected $_request;
public function __construct(Zend_Controller_Request_Abstract $request, $options = null)
{
parent:: __construct($options);
$this->_request = $request;
}
}
// or inject only parameters
class My_Form extends Zend_Form
{
/**
* @var array
*/
protected $_params;
public function __construct(array $params, $options = null)
{
parent:: __construct($options);
$this->_params= $params;
}
}