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"; 
    } 
} 

В вашем Front Controller:

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> 

, а затем в index.phtml рассматривать себя I положить обе части контента, как это:

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

вы можете добавить столько заполнителей, как вы хотите, это не влияет на контроллерах. С помощью этого метода большинство контента остается вне контроллера, если оно не приходит из модели.

1

Создать новый абстрактный контроллер, который будет расширяться Zend_Controller_Action.

IndexController extends My_Controller_Action ->My_Controller_Action extends Zend_Controller_Action

И вы должны положить в init() все, что вы хотите. :)

+0

Хорошо, думаю, что это сработает, я попробую это =)! – user199337