przewiń do treści

Zend Framework od podstaw

Włodzimierz Gajda

<?php

class My_Application_Resource_Page
    extends Zend_Application_Resource_ResourceAbstract
{
    protected $_page;

    public function getPage()
    {
        if (null === $this->_page) {
            $this->_page = new My_Page($this->getOptions());
        }
        return $this->_page;
    }

    public function init()
    {
        $page = $this->getPage();

        $bootstrap = $this->getBootstrap();
        $bootstrap->bootstrap(array(
            'layout',
            'view',
            'frontController'
        ));

        $front = $bootstrap->getResource('frontController');
        $layout = $bootstrap->getResource('layout');
        $view = $bootstrap->getResource('view');

        $request = new Zend_Controller_Request_Http();
        $front->setRequest($request);
        $baseUrl = $request->getBaseUrl();

        $view->headTitle()
                ->setDefaultAttachOrder($page->getTitleDefaultAttachOrder())
                ->setSeparator($page->getTitleSeparator())
                ->headTitle($page->getTitleContent());

        foreach ($page->getCss() as $css) {
            if (isset($css['media'])) {
                $view->headLink()->appendStylesheet($baseUrl . $css['href'], $css['media']);
            } else {
                $view->headLink()->appendStylesheet($baseUrl . $css['href']);
            }
        }

        foreach ($page->getJs() as $js) {
            $view->headScript()->appendFile(
                    $baseUrl . $js,
                    'text/javascript'
            );
        }

        if ($keywords = $page->getKeywords()) {
            $view->headMeta()->appendName('keywords', $keywords);
        }

        if ($description = $page->getDescription()) {
            $view->headMeta()->appendName('description', $description);
        }

        $ext = $page->getExtension();
        if ($ext != 'phtml') {
            $layout->setViewSuffix($page->getExtension());
            $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
            $viewRenderer->setViewSuffix($page->getExtension());
            $viewRenderer->setView($view);
        }

        return $page;
    }

}

Listing 11.6. Klasa My_Application_Resource_Page

Rozdział 11. Implementacja wtyczki inicjalizującej zasoby

listing-11-06.txt