2015-06-23 2 views
0

Я пытаюсь загрузить другой вид в зависимости от значения, взятого из Regex маршрута, но я не могу получить ViewModel, чтобы загрузить шаблонЧто такое базовый каталог Zend ViewModel setTemplate?

public function viewAction() 
{ 
    $page = $this->params()->fromRoute()["page"]; 

    $view = new ViewModel(); 
    $view->setTemplate('module/Base/view/base/index/$page'); 

    return $view; 
} 

Я по традиционной установке модуля:

Base 
|- config 
| |- module.config.php 
|- src 
| |- Base 
|  |- Controller 
|  |- IndexController.php 
|- view 
    |- base 
    | |- index 
    |  |- index.phtml 
    |  |- other.phtml 
    |- layout 

И моя конфигурация view_manager является:

'view_manager' => array(
    'display_not_found_reason' => true, 
    'display_exceptions'  => true, 
    'doctype'     => 'HTML5', 
    'not_found_template'  => 'error/404', 
    'exception_template'  => 'error/index', 
    'template_map' => array(
     'layout/layout'  => __DIR__ . '/../view/layout/layout.phtml', 
     'error/404'   => __DIR__ . '/../view/error/404.phtml', 
     'error/index'   => __DIR__ . '/../view/error/index.phtml', 
    ), 
    'template_path_stack' => array(
     __DIR__ . '/../view', 
    ), 
), 

Я пробовал все рода ценностей в пути, переданного setTemplate, но я J ust продолжает получать сообщение об ошибке приложения, но нет журнала ошибок или деталей (возможно, потому, что я не правильно понял ошибки отображения). Я подтвердил, что $page правильно получает имя шаблона из URL-адреса, а шаблон находится в правильном каталоге.

Итак, где ViewModel начинает искать шаблоны?

Я пробовал:

$view->setTemplate('$page.phtml'); 
$view->setTemplate('$page'); 
$view->setTemplate('base/index/$page.phtml'); 
$view->setTemplate('base/index/$page'); 
$view->setTemplate('module/Base/view/base/index/$page.phtml'); 
$view->setTemplate('module/Base/view/base/index/$page'); 
+0

ugh - numpty ... Я должен использовать двойные кавычки ... – HorusKol

ответ

1

Каждый модуль, который требует скриптов вида должен иметь view_manager ключ в module.config.php

У вас есть два варианта при регистрации скриптов вида.

'view_manager' => [ 
    'template_map' => [ 
     'module-name/foo/bar' => __DIR__ . '/../view/foo/bar.phtml', 
     'custom_view_template_name' => __DIR__ . '/../view/some/other/path/bar.phtml', 
    ], 
    'template_path_stack' => [ 
     __DIR__ . '/../view', 
    ], 
], 

Template Path Stack

Это представляет собой набор (стек) путей, что вид распознаватель будет пытаться найти пути из.

Скрипты представления, которые вы установили на модели представления в контроллере, будут тогда относительно этого пути к каталогу. Этот параметр экономит ваше время, «автоматически» разрешая пути сценариев просмотра, используя общее соглашение об именах.

Например, если у вас есть FooModule и файл FooModule/view/foo-module/index/index.phtml путь шаблона, который должен использоваться в контроллере, будет foo-module/index/index.

Шаблон Карта

один к одному отображение имени шаблона на пути шаблона. Это означает, что путь шаблона точно такой же, как ключ массива.

Вы должны попытаться одобрить этот метод, так как использование template_path_stack приводит к небольшому результату, так как сценарии просмотра необходимо разрешить во время выполнения.

0

Я использую это так:

после просмотра папки внутри вашего модуля добавьте путь. Итак, я полагаю, что ваш номер

view->setTemplate('base/index/$page'); 

Это должно сделать трюк.