从zend框架中的视图获取basepath

Mad*_*bæk 11 php zend-framework zend-view zend-layout

案例:您正在使用Zend Framework开发一个站点,并且需要相关链接到部署webapp的文件夹.即mysite.com/folder在线和localhost:8080正在开发中.

无论部署位置如何,以下在控制器中都很好用:

$this->_helper->redirector->gotoSimple($action, $controller, $module, $params);
Run Code Online (Sandbox Code Playgroud)

以下是一个意见稿,即.index.phtml:

<a href="<?php echo $this->url(array('controller'=>'index', 'action' => 'index'), null, true); ?>">
Run Code Online (Sandbox Code Playgroud)

但是,如何在链接到图像或样式表时获得正确的基本路径?(例如,在layout.phtml文件中):

<img src='<?php echo WHAT_TO_TYPE_HERE; ?>images/logo.png' />
Run Code Online (Sandbox Code Playgroud)

$this->headLink()->appendStylesheet( WHAT_TO_TYPE_HERE . 'css/default.css');
Run Code Online (Sandbox Code Playgroud)

WHAT_TO_TYPE_HERE 应该用给出的东西代替

<img src="/folder/images/logo.png />` on mysite.com and `<img src="/images/logo.png />
Run Code Online (Sandbox Code Playgroud)

在localhost上

Ake*_*eem 16

您可以从Front Controller获取基本URL Zend_Controller_Front::getInstance()->getBaseUrl();.我将它包装在一个视图帮助器中

class My_View_Helper_BaseUrl 
{   
    /**
     *  Get base url
     * 
     * @return string
     */
    public function baseUrl()
    {
        return rtrim(Zend_Controller_Front::getInstance()->getBaseUrl(),'/');
    }

}
Run Code Online (Sandbox Code Playgroud)

所以在html标记中你有类似<img src="<?php echo $this->baseUrl();?>/images/logo.png"/>的东西.在帮助程序中删除了尾部斜杠,这样当应用程序没有在子文件夹中运行时(在这种情况下baseUrl是空白的),路径仍然可以工作.


pup*_*its 14

如果有人想知道最好的方式,并且不想浪费2个小时搜索Zend/Google.有一个视图助手来做到这一点.

$this->view->serverUrl();
Run Code Online (Sandbox Code Playgroud)


小智 5

如果您想在layout文件中托管名称,请打印此HOST名称并获取您的姓名:

echo $this->serverUrl().$this->baseUrl()
Run Code Online (Sandbox Code Playgroud)