Zend Framework: переменная вида в скрипте макета всегда равна нулю - PullRequest
0 голосов
/ 22 апреля 2010

Я установил переменную вида в функции someAction следующим образом:

$this->view->type = "some type";  

Когда я получаю доступ к этой переменной внутри скрипта макета следующим образом:

<?php echo $this->type ?>

ничего не печатает. Что не так?

Мои настройки application.ini, связанные с макетом

resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.layout.layout = "layout" ; changed 'default' to 'layout'

Редактировать

Этот поток предлагает альтернативное решение, но ищет решение вышеуказанной проблемы. И это работало в Zend 1.6.2. Я только что обновился до 1.10, и он перестал работать.

Редактировать

Если я установлю это представление var внутри любой функции _init Bootstrap, она будет работать.

Ответы [ 3 ]

7 голосов
/ 22 апреля 2010

Если вы хотите назначить что-то для вашего макета, вы должны пойти другим путем:

// get the layout instance
$layout = Zend_Layout::getMvcInstance();

// assign fooBar as Name to the layout
$layout->name = 'fooBar';
1 голос
/ 04 февраля 2012

Я считаю, что объект представления макета и объект представления действия являются отдельными экземплярами класса Zend_View.

Я думаю, что это правильный способ передачи переменных из контроллера в макет:

/**
 * Controller action
 */    
public function indexAction()
{
    $this->_helper->layout()->assign('myName', 'John Doe');
}

и затем в вашем скрипте макета вы можете получить доступ к переменным, ссылаясь на объект макета следующим образом:

<html>
<body>
<?php echo $this->layout()->myName; ?>
</body>
</html>
0 голосов
/ 22 апреля 2010

У вас есть следующая запись в файле application.ini?

resources.view[] =

Таким образом, вы можете инициализировать представление без параметров и использовать его через:

<?php echo $this->type ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...