2011-10-09 3 views
-1

컨트롤러 수준에서 부분 변수를 설정할 수있는 방법이 있습니까?젠드 프레임 워크에서 컨트롤러의 부분 변수를 뷰 변수로 설정 하시겠습니까?

나는 부분 내부 변수를해야 할 때마다 나는 항상 그들을 통과해야하기 때문에 :

<?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()을 사용할 수 있습니다. 이를 통해 매번 뷰 변수를 전달할 필요가 없습니다. 부분에서,

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

다음 : 당신은 또한 단지 부분에 매개 변수로 현재보기를 보낼 수

1

하는 데 도움이

희망, 나의 겸손에서

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

의견, 당신은 당신이해야 할 일을 정확히하고 있습니다 - 당신이 부분적으로 필요한 변수 만 전달하십시오.

고통의 원인이된다면 불필요하게 부분을 사용하고있는 것으로 생각할 수 있습니다.

또는 다른 방법으로 말해, 일부 변수를 모든 부분 변수에서 사용하려면 부분 변수가 해당 변수를 사용해야하는 곳이 아닐 수도 있습니다.

아마도 Placeholders을보고 내보기를 렌더링하는 방법에 대해 다시 생각해보십시오.

+0

미안하지만, 나는 단지 부분적인 것에서 공통 변수에 접근하는 편리한 방법을 원합니다. 복잡하게 할 필요가 없습니다. – David

+0

partials의 아이디어는 제한된 변수 범위이므로, 필요한 변수 만 전달하면됩니다. 당신이 그들을 오용하지 않는다면 불편하지 않습니다. – jah

+0

나는 부분 변수가 코드의 중복을 피하기 위해 사용되어야한다고 말하고 싶다. 가변 범위를 제한하기보다는 (아마도 결과 일 것이다) – edi9999

관련 문제