我是相当新的Zend框架和MVC一般,所以我找了一些建议。我们有我们有一些方法来获得一些用户信息,账户配置的基础控制器类等需要帮助搞清楚如何写我的Zend视图助手
所以我用一些方法,写出来的各种控制器操作的代码,但现在我想避免重复此代码,并进一步我想采取此代码以外的控制器和视图助手,因为它主要是输出一些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...
的$此 - > _ getModelConfig和$这个 - >用户>的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;
}
}
任何意见是值得欢迎的!
我的问题是究竟采取这种代码移出控制器。我不想做的事情是让我的模型输出
最好的办法是从你的模型throught控制器获取数据,然后传递给视图。但是如果你确实需要一个定制的助手来回显视图部分,我们只会知道你是否确切地说出了你想要做的。
如果你已经有了一个帮手这个逻辑,试图只传递在你看来myhelper($这个 - > PARAMS)的参数; ?>
你可能想看看这种做法太:
来源
2010-08-03 17:55:08