2012-11-05 2 views
0

Zend의 최신 2.0 버전이 설치되었습니다. 컨트롤러에서 뷰를 정의하고 표시하는 데 문제가 있습니다. 새 ViewModel을 만들어 반환하면 잘 동작합니다. 예를 들어.보기를 할당하는 중 zend 오류가 발생했습니다.

public function __construct() 
    { 
     $this->view = new ViewModel(); 
    } 

$this->view->hello="hey"; 
$this->view->test="there"; 
return $this->view; 

하지만 저는 Zend 1.8 이전 버전에서이 작업을 수행 할 필요가 없었습니다.

Strict Standards: Creating default object from empty value in /path-to-controller-file.php 

내가 다른 곳으로 설정해야합니까 : 새로운 모델을 만들지 않고 , 그것은 나에게 다음과 같은 오류를 준다?

답변

2

ZF2는 Zend Framework의 이전 버전과 크게 다르므로 다음과 같은 몇 가지 문제가 발생할 수 있습니다.

new ViewModel()이없는 $this->viewnull이 아니므로 더 이상의 변수를 null로 설정하면 오류가 발생하기 때문에 발생하는 오류입니다. ZF2에 대한 나의 이해에서 볼 때와 컨트롤러는 의도적으로 분리되어 있습니다. 내가 정확히 기억한다면

$viewModel = new ViewModel(); 
$viewModel->hello = 'hey'; 

return $viewModel; 

또한 배열을 반환 할 수 있습니다 :

는 일반적으로 ZF2에서 당신이 작업에서 데이터를하고 돌아

return array('hello' => 'hey'); 
0

그냥 @DrBezas을 확장하는 것은 답 :

컨트롤러 동작에서 배열을 반환 할 수는 있지만 실제로 제안 된 경로는 아닙니다. 적어도 항상 ViewModel 인스턴스를 반환합니다. 배열 만 반환하면 as explained in my blog이라는 성능이 발생합니다.

가장 좋은 방법은 항상

public function someAction() 
{ 
    $viewModel = new ViewMode(); 
    $viewModel->setTemplate('MODULE/CONTROLLER/ACTION'); 

    // more controller logic 

    return $viewModel->setVariables(array(
     //key-value-paired view variables 
    )); 
} 
처럼 완전한 뷰 모델을 반환하는 것입니다
관련 문제