ZF:フォームメソッド内でコントローラーの要求オブジェクトにアクセスする方法は?

StackOverflow https://stackoverflow.com/questions/712949

  •  23-08-2019
  •  | 
  •  

質問

フォームメソッド内のリクエストオブジェクトにアクセスする方法は?フォームメソッド内のActionHelperを使用してコントローラーの要求オブジェクトにアクセスすることは何らかの形で可能であると思いますが、そのようなタスクの新しいクラスを書くことは過剰であるようです。

または、Zend_Registryおよびアクセスレジストリアイテムに対するコントローラーのリクエストをフォームに保存する必要がありますか?

役に立ちましたか?

解決

レジストリの方法(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;
    }       
}

他のヒント

$request = Zend_Controller_Front::getInstance()->getRequest()

?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top