2009-12-05 3 views

답변

1

라는 플러그인이 LayoutDefaults : 프런트 컨트롤러에서

class MyLib_Controller_Plugin_LayoutDefaults extends Zend_Controller_Plugin_Abstract 
{  
    public function preDispatch(Zend_Controller_Request_Abstract $request) 
    { 
    $mvc = Zend_Layout::getMvcInstance(); 
    if (!$mvc) return; 
    $view = $mvc->getView(); 
    if (!$view) return; 

    /** 
    * Set the defaults. 
    */ 
    $view->value1 = "default value1"; 
    } 
} 

:

Zend_Controller_Front::getInstance() 
    ->registerPlugin(new MyLib_Controller_Plugin_LayoutDefaults()); 

당신의 layout.phtml에서 :

<?= $this->escape($this->value1) ?> 

그리고 마지막으로 컨트롤러에서 필요에 따라 기본값을 다시 정의하십시오.

$this->view->value1 = "new value 1"; 
0

컨트롤러에서보기 콘텐츠를 계속 보려고하는 것 같습니다. 나는 또한 컨트롤러에서 뷰 컨텐츠를 유지하려고 노력하기 때문에 가능한 한 언제든지 뷰 컨텐츠를 제 관점에 배치하려고합니다. 예를 들어

, 내가이 자리, 제목에 대한 하나의 주요 내용에 대한 또 다른있을 수 있습니다 layout.phtml에 :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <title><?php echo $this->escape($this->placeholder('titleContent')) ?></title> 
</head> 
<body> 
    <div id="maincontent"> 
    <?php echo $this->layout()->content ?> 
    </div> 
</body> 

다음 자체 I을 볼 index.phtml에를 나는이 방법을 이 같은 내용의 두 조각을 넣어 : 당신이 당신의 컨트롤러에 영향을주지 원하는

<?php $this->placeholder('titleContent')->Set('My Index Page Title') ?> 
<p>Index page content here</p> 

당신은 많은 자리를 추가 할 수 있습니다. 이 메서드를 사용하면 대부분의 콘텐츠가 모델에서 제공되지 않는 한 컨트롤러에서 벗어나지 않습니다.

1

Zend_Controller_Action을 확장 할 새 추상 컨트롤러를 만듭니다. >My_Controller_Action extends Zend_Controller_Action

그리고 거기 당신은 당신이 원하는대로 init()에 넣어해야 -

IndexController extends My_Controller_Action. :)

당신은 프런트 컨트롤러를 만들 수
+0

좋아,이 방법이 효과가 있다고 생각합니다. 시도해 보겠습니다.)! – user199337