Jho*_*rra 2 php controller zend-framework2
我正在尝试将现有的应用程序从Zend Framework 1转换为Zend Framework 2,我遇到了一些麻烦.
在原始应用程序中,我在控制器中有以下内容
function init()
{
$this->initialize_values();
}
Run Code Online (Sandbox Code Playgroud)
我的所有控制器都扩展了一个基类,它具有该功能,如下所示.
protected function initialize_values()
{
$this->_db = Zend_Registry::get('dbAdapter');
$this->_current_user = new User(&$this->_db);
$this->_auth = Zend_Auth::getInstance();
if($this->_auth->hasIdentity())
{
$this->_current_user = unserialize($_SESSION['current_user']);
$this->view->current_user = $this->_current_user;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经复制了除设置该视图值的最后一行之外的所有功能.
在我为ZF2找到的所有示例中,它们都返回了一个数组或一个视图模型.我没有看到将值传递给未附加到动作函数的视图的方法.
那是因为你需要创建new ViewModel()并将其返回给调用脚本.根据您从控制器返回的内容,将调用相应的渲染器.
例如,如果我正在返回一个html块,我会使用
return new ViewModel(array('results' => $results));
Run Code Online (Sandbox Code Playgroud)
在我的控制器动作结束时.但是,如果我想提供JSON输出,我会返回
return new JsonModel($results);
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可以准备视图模型并将其存储在受保护的变量中,并向其添加变量,如下所示:
// in your constructor
$this->_view = new ViewModel();
// in your initialize values method
$this->_view->setVariable($name, $value);
Run Code Online (Sandbox Code Playgroud)
然后准备输出时:
// in your controller action
return $this->_view;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13922 次 |
| 最近记录: |