zendframework baseUrl view помощник в начальной загрузке - PullRequest
3 голосов
/ 06 января 2010

Мой веб-сайт использует Zend Framework и работает в подпапке, например: http://www.example.com/sub/folder. Теперь я хочу добавить свои ссылки CSS к / sub / folder /, чтобы загрузка CSS на страницах, подобных http://www.example.com/sub/folder/product/abc, Я думал, что нашел помощник вида для этого BaseUrl, но кажется, что BaseUrl работает только в реальных файлах вида, а не в классе начальной загрузки. Кто-нибудь знает причину этого и приемлемый обходной путь?

Это Сниппет из моего класса классных ремней.

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initStylesheet()
    {
        $this->_logger->info('Bootstrap ' . __METHOD__);

        $this->bootstrap('view');
        $this->_view = $this->getResource('view');

        $this->_view->headLink()->appendStylesheet($this->_view->baseUrl('/css/main.css'));
    }
}

Ответы [ 3 ]

5 голосов
/ 07 января 2010

Я нашел причину, по которой помощник вида baseUrl() не работал в Bootstrap. Это потому что у Zend_Controller_Front не было Zend_Controller_Request.

Поэтому, чтобы решить эту проблему, я добавил другой метод ресурсов для инициализации запроса.

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initRequest()
    {
        $this->_logger->info('Bootstrap ' . __METHOD__);

        $this->bootstrap('FrontController');

        $front = $this->getResource('FrontController');
        $request = new Zend_Controller_Request_Http();

        $front->setRequest($request);
    }

    protected function _initStylesheet()
    {
        $this->_logger->info('Bootstrap ' . __METHOD__);

        $this->bootstrap('view');
        $this->_view = $this->getResource('view');

        $this->_view->headLink()->appendStylesheet($this->_view->baseUrl('/css/main.css'));
    }
}
1 голос
/ 06 января 2010

Чтобы получить baseUrl, вы можете использовать

Zend_Controller_Front::getInstance()->getBaseUrl();

или решение без ZF:

substr($_SERVER['PHP_SELF'], 0, -9);
0 голосов
/ 14 мая 2010

На самом деле вам не нужно получать baseUrl, потому что ZF уже делает это за вас. Вы просто должны обратить внимание на свой путь. Не используйте первую косую черту! в противном случае ZF вернет удаленный адрес.

Просто используйте '$this->_view->headLink()->appendStylesheet('css/main.css'); '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...