2011-10-09 68 views
-1

有什么办法可以设置控制器级别的局部变量吗?在控制器中为Zend Framework中的partials设置视图变量?

因为每次我需要里面的部分变量,我总是要过他们:

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

我真的就像actionName是适用于所有的谐音 - 例如。

回答

1

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

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

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

希望帮助,

1

你也可以只发送当前视图作为参数传递给部分:

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

然后,在部分:

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

愚见意见,你正在做你应该做的 - 只传递你需要的部分变量。

如果这会导致你的痛苦,也许你可能会认为你不必要地使用了partials。

或者换一种说法,如果你想要在所有partials中有一些变量,那么可能partial不是你应该使用这些变量的地方。

也许看看Placeholders并重新思考如何着手渲染您的观点。

+0

对不起,但我只是想要一个方便的方式来访问我的部分中的一些常见变量,无需复杂的事情。 – David

+0

partials背后的想法是它们的变量范围有限,因此您只需传递所需的变量即可。这不是一个不便,除非你滥用它们。 – jah

+0

我宁愿说部分应该用来避免重复代码,而不是限制它们的变量范围(但这可能是一个结果) – edi9999

相关问题