私は一般的にZendFrameworkとMVCにかなり慣れていないので、いくつかのアドバイスを探しています。基本コントローラークラスがあり、ユーザー情報やアカウント構成などを取得するためのメソッドがいくつかあります。
そのため、これらのメソッドのいくつかを使用して、さまざまなコントローラーアクションでコードを書き出しますが、このコードの重複を避けたいと思います。さらに、このコードをコントローラーの外に、ビューヘルパーに入れたいと思います。 JavaScriptを出力します。したがって、コントローラーのコードは次のようになります。
$obj= new SomeModel ( $this->_getModelConfig () );
$states = $obj->fetchByUser ( $this->user->getId() );
//Fair amount of logic here using this result to prepare some javascript that should be sent to the view...
$ this->_getModelConfigと$this->user-> getId()はコントローラーで実行できることですが、このコードを移動した後、その情報をビューヘルパーに渡すための最良の方法は何ですか?コントローラーの?
コントローラでこれらのメソッドを呼び出し、結果をビューに保存して、ヘルパーにそこから取得させる必要がありますか?
私が考えていたもう1つのオプションは、ヘルパーにいくつかのパラメーターを追加することでした。パラメーターが渡された場合、それらをヘルパーのプロパティに格納して返し、パラメーターを渡さずに呼び出されると、作業を実行します。したがって、次のようになります。
コントローラーから:
$this->view->myHelper($this->user->getId(), $this->_getModelConfig());
ビューから:
<?= $this->myHelper(); %>
ヘルパー:
class Zend_View_Helper_MyHelper extends Zend_View_Helper_Abstract
{
public $userId = '';
public $config = null;
public function myHelper ($userId = null, $config = null)
{
if ($userId) {
$this->userId = $userId;
$this->config = $config;
} else {
//do the work
$obj = new SomeModel($this->config);
$states = $obj->fetchByUser($this->userId);
//do the work here
}
return $this;
}
}
どんなアドバイスも歓迎します!