在Zend框架中为局部在控制器中设置视图变量


Set view variables in controller for partials in Zend Framework?

是否有办法为控制器级别的部分设置变量?

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

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

我真的希望actionName在所有偏导数上都可用-例如。

您可以将Zend_View_Helper_Partial类扩展为将该变量保持在作用域中的类。您需要重写cloneView()函数:

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

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

希望有帮助,

您也可以将当前视图作为参数发送给局部:

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

然后,在部分中:

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

在我看来,您正在做的正是您应该做的事情-传递您在部分中需要的那些变量。

如果这让你感到痛苦,也许你可以认为你不必要地使用了偏音。

或者,换句话说,如果你想让一些变量在所有的偏导数中可用,那么也许你不应该在偏导数中使用这些变量。

也许可以看看占位符,重新考虑如何呈现您的视图