2010-05-28 4 views
1

나는 PHP-MVC 프레임 워크를 만들고 있습니다. 나는 Controller and View Association에 관한 질문을 가지고있다.ZendFramework와 같은 효과적인 컨트롤러/뷰 연관 구현

$this->view->data = 'Data here'; 

그래서이 다음과 같이 뷰에서 사용할 수 있습니다 :

echo $this->data; 

나는이 관계를 구현할 수 있는지 궁금 나는 젠드 프레임 워크는 다음과 같이 컨트롤러에서보기를 사용하는 방법을 좋아한다. /** **/ 사이의 코드를 제거하고 일부 마법 기능으로 바꾸고 싶습니다. 로 다음과 같은 컨트롤러에 대한 내 코드 :이를 구현하기 위해

class UserController extends Controller{ 
    /************************************/ 
    public function __construct(){ 
    $this->view = new View(); 
    $this->view->setLayout('home'); 
    } 
    function __destruct(){ 
    $this->view->render(); 
    } 
    /************************************/ 
    public function index(){ 
    $this->redirect('user/login'); 
    } 
    public function login(){ 
    } 
    public function register(){ 
    } 
    public function forgotPassword(){ 
    } 
} 
+1

을 오류 처리를 구현? – BoltClock

+0

Zend는 컨트롤러 당 하나의보기 동작 만 허용합니다. –

답변

1

당신이는 정말 마법 기능이 필요합니다. 당신은 할 수 있습니다 :

$this->view->var1 = 'val1'; 

배열의 이름과 값 저장됩니다 set 또는 assign라는 컨트롤러의 방법을 만듭니다. 당신이 그 배열을보기 루프를 호출하여 뷰 객체에 할당하기 전에 :

foreach ($this->viewVars as $viewVar) { 
    $this->view->$viewVar['name'] = $viewVar['val']; 
} 
0

마법 방법 __set()와 __get()를 사용합니다.

protected $ _data = array(); 등 설정되지 않은 값을 검색 할 때

public function __set($name, $value) 
{ 
    $this->_data[$name] = $value; 
} 

public function __get($name) 
{ 
    return $this->_data[$name]; 
} 

그런 다음 당신은 생성자와 소멸자를 제거 할 ...