Я новичок в 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;
}
}
Любые советы приветствуются!