Я довольно новичок в Zend Framework и 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 () - это то, что я мог бы сделать в контроллере, теперь мой вопросКаков наилучший способ передать эту информацию помощнику вида, как только я переместить этот код из контроллера?
Должен ли я просто вызвать эти методы в контроллере и сохранить результаты в представлении и получить помощниказабрать это оттуда?
Другой вариант, о котором я думал, это добавить некоторые параметры в помощник, и если параметры передаются, я сохраняю их в свойствах помощника и возвращаю, и при вызове без передачи параметров он выполняет работу.Так бы это выглядело так:
От контроллера:
$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;
}
}
Любой советприветствуется!