代码之家  ›  专栏  ›  技术社区  ›  vdrmrt

引导中的ZendFramework BaseURL视图帮助程序

  •  3
  • vdrmrt  · 技术社区  · 16 年前

    我的网站使用Zend框架并在子文件夹中运行,例如: http://www.example.com/sub/folder .现在,我想用/sub/folder/预先设置我的CSS链接,使CSS加载到类似 http://www.example.com/sub/folder/product/abc 我以为我找到了一个视图帮助器来做这个baseurl,但是baseurl似乎只在实际的视图文件中工作,而不是在引导类中。 有人知道为什么会这样做吗?还有一个例外的解决方案?

    这是我的boodstrap类的一个片段。

    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 回复  |  直到 13 年前
        1
  •  5
  •   Paul T. Rawkeen Bartosz Zasada    13 年前

    我找到了 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'));
        }
    }
    
        2
  •  1
  •   Corey Ballou    16 年前

    要获取您可以使用的baseurl

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

    或非ZF解决方案:

    substr($_SERVER['PHP_SELF'], 0, -9);
    
        3
  •  0
  •   Rodrigo Souza    16 年前

    实际上,你不需要得到baseurl,因为zf已经为你做了。你只需要注意你的道路。不要使用第一个斜杠!否则ZF将返回远程地址。

    只使用 '$this->_view->headLink()->appendStylesheet('css/main.css'); '