젠드 프레임 워크와 MVC를 처음 접했을 때 새로운 조언이 필요합니다. 우리는 몇 가지 사용자 정보, 계정 구성 등을 얻을 수있는 몇 가지 메소드가있는 기본 컨트롤러 클래스를 가지고 있습니다.내 젠드 뷰 도우미 작성법 이해하기
그래서 여러 컨트롤러 액션에서 코드를 작성하기 위해 일부 메소드를 사용하고 있습니다. 이 코드를 복제하지 말고,이 코드를 주로 컨트롤러 외부와 뷰 도우미에서 가져 와서 일부 JavaScript를 출력하는 것이 좋습니다. 그래서 컨트롤러의 코드는 다음과 같습니다
이$obj= new SomeModel ($this->_getModelConfig());
$states = $obj->fetchByUser ($this->user->getId());
//Fair amount of logic here using this result to prepare some javascript that should be sent to the view...
(가)이 $ - $ this-이> 사용자 -> 내가 컨트롤러에서 할 수있는 일이, 지금은 내 질문에 무엇을()> _ getModelConfig이며 getId 이 코드를 컨트롤러 밖으로 옮기면 해당 정보를보기 도우미로 전달하는 가장 좋은 방법은 무엇입니까?
그냥 컨트롤러에서 이러한 메서드를 호출하고 결과를 뷰에 저장하고 도우미가 뷰어에서 해당 메서드를 선택하도록해야합니까?
내가 생각한 또 다른 옵션은 도우미에 매개 변수를 추가하고 매개 변수가 전달되면 도우미 및 반환의 속성에 저장하고 매개 변수를 전달하지 않고 호출 할 때 작업을 수행하는 것입니다. 그래서 그 결과는 다음과 같습니다 컨트롤러에서
를 :보기에서
$this->view->myHelper($this->user->getId(), $this->_getModelConfig());
:
<?= $this->myHelper(); %>
도우미 :
class Zend_View_Helper_MyHelper extends Zend_View_Helper_Abstract
{
public $userId = '';
public $config = null;
public function myHelper ($userId = null, $config = null)
{
if ($userId) {
$this->userId = $userId;
$this->config = $config;
} else {
//do the work
$obj = new SomeModel($this->config);
$states = $obj->fetchByUser($this->userId);
//do the work here
}
return $this;
}
}
가 어떤 조언을 환영합니다!
내 질문 컨트롤러에서 그 코드를 가지고 정확하게이다. 내가하고 싶지 않은 일은 내 모델 출력
가장 좋은 방법은 컨트롤러에서 모델을 통해 데이터를 가져온 다음보기로 전달하는 것입니다. 그러나보기 부분을 반향시키기 위해 사용자 정의 도우미가 실제로 필요한 경우, 사용자가 수행하려는 작업을 정확하게 말하면 알 수 있습니다.
이미이 논리를 도우미로 사용하고 있다면 뷰 myhelper ($ this-> params)에서 매개 변수를 전달하십시오. ?>
당신도이 방법을 살펴 할 수 있습니다 :
출처
2010-08-03 17:55:08