从Zend中的控制器中的视图传递数据

时间:2011-10-25 21:37:48

标签: php zend-framework

我是Zend的新手,对Zend Framework有疑问。我试图谷歌但没有得到正确的答案。

之前的开发人员在控制器

中做了类似的事情
public function indexAction()
{
    $abc = $this->view->abc;
}

我的问题是如何从控制器中的视图中分配内容?如果你能这样做,这是一项法律任务吗?

1 个答案:

答案 0 :(得分:2)

虽然这确实是一种糟糕的方法,但我可以提供一个可行的解决方案。

我的猜测是,您之前的开发人员在调度周期的早期分配了一些视图属性,甚至可能在Bootstrap中,例如

// Bootstrap.php

protected function _initGlobalViewProperties()
{
    $this->bootstrap('view');
    $view = $this->getResource('view');
    $view->abc = 'abc';
}

虽然这样做确实没有问题,但不应依赖于向控制器提供资源的视图。更好的方法是创建一个可供所有控制器使用的应用程序资源。

Bootstrap.php ...

protected function _initAbc()
{
    $resource = 'abc'; // can be anything

    $this->bootstrap('view');
    $view = $this->getResource('view');
    $view->abc = $resource;

    return $resource; // adds resource into Application registry
}

并在您的控制器中......

$abc = $this->getInvokeArg('bootstrap')->getResource('abc');