Zend Framework görünümünde BasePath Başlarken

5 Cevap php

Olgu: Zend Framework ile bir siteyi geliştirmek ve webapp Yani içeri dağıtıldığında klasöre göreceli bağlantıları ihtiyacım var mysite.com/folder online ve localhost:8080 geliştirilmektedir.

Aşağıdaki bakılmaksızın dağıtılan konumu kontrolörleri güzel çalışıyor:

$this->_helper->redirector->gotoSimple($action, $controller, $module, $params);

Ve yani bir viewscript içinde takip. index.phtml:

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

Ama resim veya stil sayfaları için bağlarken nasıl doğru BasePath alabilirim? (A layout.phtml dosyada, örneğin):

<img src='<?php echo WHAT_TO_TYPE_HERE; ?>images/logo.png' />

ve

$this->headLink()->appendStylesheet( WHAT_TO_TYPE_HERE . 'css/default.css');

WHAT_TO_TYPE_HERE veren bir şey ile değiştirilmesi gereken

<img src="/folder/images/logo.png />` on mysite.com and `<img src="/images/logo.png />

localhost

5 Cevap

Sen Ön Kontrol Zend_Controller_Front::getInstance()->getBaseUrl(); gelen baz url alabilirsiniz. Ben bir görünüm yardımcısında olduğunu sarın

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

}

Yani html biçimlendirme Eğer uygulama bir alt klasöründe çalışmasına değilken (baseURL bu durumda boş böylece) <img src="<?php echo $this->baseUrl();?>/images/logo.png"/> eğik çizgi yardımcısında çıkartıldı yolu hala olacak gibi bir şey var iş.

Durumda herkes en iyi şekilde bilmek istiyor ve Zend / Google arama 2 saat harcamak istemiyor. Bunu yapmak için bir görünüm yardımcı vardır.

$this->view->serverUrl();

Bu benim baseUrl yardımcısıdır:

class Zend_View_Helper_BaseUrl extends Zend_View_Helper_Abstract {
    public function baseUrl() {
        $protocol = isset($_SERVER['HTTPS']) ? 'https' : 'http';
        $server = $_SERVER['HTTP_HOST'];
        $port = $_SERVER['SERVER_PORT'] != 80 ? ":{$_SERVER['SERVER_PORT']}" : '';
        $path = rtrim(dirname($_SERVER['SCRIPT_NAME']), '/\\') . '/';
        return "$protocol://$server$port$path";
    }
}

Eğer adı barındırmak istiyorum yoksa senin layout bu yüzden bu baskı ve HOST adını almak dosya:

echo $this->serverUrl().$this->baseUrl()

Bu benim için çalıştı:

echo $ this-> ServerUrl (). $ This-> url ()