2009-03-11 22 views
11

Durum: Zend Framework ile bir site geliştiriyorsunuz ve web sunucusunun dağıtıldığı klasöre göreceli bağlantılara ihtiyacınız var. mysite.com/folder çevrimiçi ve localhost:8080 geliştirme aşamasındadır.Zip çerçevesinde görünümden temel görünüm alma

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

Ve yani viewscript içinde aşağıdaki:

şu bakılmaksızın konuşlandırılmış yerin kontrolörleri güzel çalışıyor. index.phtml:

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

Ama görüntü veya stil bağlarken Doğru BasePath nasıl elde edebiliriz? (Örneğin bir layout.phtml dosyasında):

<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

localhost

cevap

16

yapabilirsiniz üzerinde

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

verir şeyle değiştirilmesi gerektiğini Ön denetleyici Zend_Controller_Front::getInstance()->getBaseUrl(); taban url olsun. (BaseURL boştur uygulama bir alt klasörde çalış değilken o yüzden bir görünüm yardımcı Eğer <img src="<?php echo $this->baseUrl();?>/images/logo.png"/> gibi bir şey eğik çizgi yardımcı içinde çıkartıldı sahip HTML işaretlemesinde Yani

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

} 

o sarın Bu durumda yol hala çalışmaya devam edecektir.

+0

i temel URL yardımcı katılıyorum, ama bence bu çok daha iyi bir yaklaşım –

4

Bu benim baseURL yardımcısıdır: herkes en iyi yolu bilmek istiyor ve Zend/Google'da arama 2 saat harcamak istemiyor

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"; 
    } 
} 
+0

bu gibi kullanmak olduğunu uzanır görüntüler için başka bir sahip:

0
<?php 
/** 
* 
* @package TaMeR Library 
* @copyright (C) 2010 Dennis T Kaplan 
* @license GPL {@link http://www.gnu.org/licenses/gpl.html} 
* 
* @author  Dennis T Kaplan 
*/ 

/** @see Zend_View_Helper_Abstract */ 
require_once 'Zend/View/Helper/Abstract.php'; 

class TaMeR_View_Helper_BaseUrl extends Zend_View_Helper_Abstract { 
    /** 
    * Returns site's base url, or file with base url prepended 
    * 
    * $file is appended to the base url for simplicity 
    * 
    * @param string|null $file 
    * @return string 
    */ 

    public function baseUrl($file = NULL) { 

     $baseUrl = $domain = $subdomain = $protocol = $host = $port = NULL; 

     $host = array_reverse(explode('.', $_SERVER['HTTP_HOST'])); 
     $domain = $host[1].'.'.$host[0]; 
     $subdomain = (isset($host[2]) ? $host[2] : 'www'); 
     if(getenv("HTTPS") == 'on') { 
      $protocol = 'https'; 
      $port  = $_SERVER['SERVER_PORT'] != 443 ? ':'.$_SERVER['SERVER_PORT'] : ''; 
     }else{ 
      $protocol = 'http'; 
      $port  = $_SERVER['SERVER_PORT'] != 80 ? ':'.$_SERVER['SERVER_PORT'] : ''; 
     } 

     // Remove trailing slashes 
     if(NULL !== $file) { 
      $file = '/' . ltrim($file, '/\\'); 
     }else{ 
      $file = rtrim(dirname($_SERVER['SCRIPT_NAME']), '/') . '/'; 
     } 
     $baseUrl = $protocol.'://'.$subdomain.'.'.$domain.$port.$file; 
     return $baseUrl; 
    } 
} 
+0

mevcut kodu yeniden yazdınız mı? – Alexar

14

durumda. Bunu yapmak için bir manzara yardımcısı var.

$this->view->serverUrl(); 
+1

Düzeltme: $ this-> serverUrl(); – mzalazar

5

bunu bu yazdırabilir ve HOST adını almak için layout dosyada adı barındırmak istiyorum yaparsanız: (

echo $ this-> ServerUrl:

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

Bu benim için çalıştı). $ This-> url()

İlgili konular