Zend перезаписать объект по умолчанию

Как я могу переписать объект представления по умолчанию в Zend Framework, чтобы я мог иметь пользовательский.

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {

function _initViewHelpers() { 
    $this->bootstrap('view');
    $view = $this->getResource('view');
    $view->doctype('HTML4_STRICT');
    $view->setHelperPath(APPLICATION_PATH . '/helpers', '');        
    $view->headMeta()->appendHttpEquiv('Content-type', 'text/html;charset=utf-8')
                     ->appendName('description', 'Zend Framework');
    $view->headTitle()->setSeparator(' - ');
    $view->headTitle('Zend Custom View');
    $view->setScriptPath(APPLICATION_PATH . '/themes/admin');

    return $view;
}
}

Представление по умолчанию содержит путь к сценарию по умолчанию для модуля. Я хочу один путь для всех модулей, чтобы включить систему шаблонов. Метод setScriptPath должен перезаписать путь по умолчанию, сгенерированный объектом представления, но это не так.

array(2) { [0]=> string(66) "C:/xampp/htdocs/NEOBBS_v6/application/modules/admin/views\scripts/" [1]=> string(51) "C:\xampp\htdocs\NEOBBS_v6\application/themes/admin/" }

у него есть два scriptPath. Можно ли это сделать, переписав объект представления по умолчанию? Как я могу это сделать, спасибо за продвинутый

2 ответа

То, что опубликовал ArneRie, верно, однако ViewRenderer проверяет, установлен ли стандартный путь к сценарию, и добавляет его, если нет. Поскольку пути проверяются LIFO, то происходит то, что ViewRenderer добавляет стандартный путь после вашего, а затем всегда использует его.

Для меня работало то, что я одновременно задавал и стандартный путь, и мой собственный путь, причем последний был последним, что-то вроде:

$view->setScriptPath(array(
    APPLICATION_PATH . '/views/scripts/', // or whatever the standard path is
    APPLICATION_PATH . '/themes/admin'
));

хотя может быть лучшее решение для этого.

Попробуйте добавить:

        $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
        $viewRenderer->setView($view);
        Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
Другие вопросы по тегам