有没有办法在控制器级别为partial设置变量?
因为每次我需要部分内部的变量时我总是要传递它们:
<?php
echo $this->partial('travels/_steps.phtml',
array('searchHotel' => $this->searchHotel,
'actionName' => $this->actionName))
?>
我真的希望actionName
可用于所有部分 - 例如。
答案 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并重新考虑如何渲染您的观点。