Php Zend视图变量在视图帮助程序中可用吗?
我想知道Zend视图变量是否可以在我的视图助手类中使用,而不直接作为参数传入 谢谢Php Zend视图变量在视图帮助程序中可用吗?,php,zend-framework,view,helper,Php,Zend Framework,View,Helper,我想知道Zend视图变量是否可以在我的视图助手类中使用,而不直接作为参数传入 谢谢 Luca由于所有视图帮助程序都在其$view属性中引用了视图,因此答案是肯定的 在助手端,您不知道哪些属性可用。最好在调用或构造时将任何必需的属性传递给帮助器。您可以访问视图帮助器中的$view表单,我将给出一个示例: 在下面的示例中,您可以设置和获取视图变量 <?php class App_View_Helper_Job extends Zend_View_Helper_Abstract {
Luca由于所有视图帮助程序都在其
$view
属性中引用了视图,因此答案是肯定的
在助手端,您不知道哪些属性可用。最好在调用或构造时将任何必需的属性传递给帮助器。您可以访问视图帮助器中的
$view
表单,我将给出一个示例:
在下面的示例中,您可以设置和获取视图变量
<?php
class App_View_Helper_Job extends Zend_View_Helper_Abstract {
public function setView(Zend_View_Interface $view) {
$this->view = $view;
}
public function job() {
$this->view->var1 = "testing var1 ";
$this->view->var2 = $this->view->var1;
}
}
你应该知道一件事:
视图帮助器的视图实例是在帮助器实例化时设置的,在视图克隆时不会更新。因此,如果从partial调用,您无法确定使用的是哪一个。我发现,当我在注册表中设置视图实例并从helper获取它时,视图变量保持不变。下面是我在社交引擎项目中使用的代码片段
$view = Zend_Registry::get('Zend_View');
/*
* Check data available and set it to local variable
*/
if(isset($view->localeTranslations[$key]))
{
$translate = $view->localeTranslations[$key];
}
它们是存在的,但是如果你在助手中使用它们,它将是一个非常糟糕的助手,因为它违反了一个基本原则——解耦。当你调用视图助手时,如何将变量传递给它?setView()
是在Zend\u view\u helper\u Abstract
中实现的,所以你不需要自己去做。这不太正确。如果实现setView()
,它将在执行帮助程序之前接收实际的视图对象。