在控制器中为Zend Framework中的部分设置视图变量?

时间:2011-10-09 16:01:20

标签: php zend-framework

有没有办法在控制器级别为partial设置变量?

因为每次我需要部分内部的变量时我总是要传递它们:

<?php 
    echo $this->partial('travels/_steps.phtml', 
                        array('searchHotel' => $this->searchHotel, 
                              'actionName'  => $this->actionName)) 
?>

我真的希望actionName可用于所有部分 - 例如。

4 个答案:

答案 0 :(得分:1)

您可以将Zend_View_Helper_Partial类扩展为将该变量保留在范围内的类。您需要覆盖cloneView()函数:

public function cloneView()
{
    $view = parent::cloneView();
    $view->actionName = $this->view->actionName
    return $view;
}

答案 1 :(得分:1)

您可以使用$this->render()代替。有了它,您不需要每次都传递视图变量。

希望有所帮助,

答案 2 :(得分:1)

您也可以将当前视图作为参数发送到partial:

<?php 
  echo $this->partial('travels/_steps.phtml', array('parentView' => $this));

然后,在部分:

<?php
  $view = $this->parentView;
  echo $view->searchHotel, $view->actionName;

答案 3 :(得分:-2)

以我的拙见,你正在做你应该做的事情 - 只传递你在部分中需要的那些变量。

如果这会让你感到痛苦,也许你可能会认为你不必要地使用了部分。

或者换句话说,如果你想让所有部分中都有一些变量,那么也许部分不是你应该使用这些变量的地方。

或许查看Placeholders并重新考虑如何渲染您的观点。