Zend_framework - görüntülerin göreli yolları

3 Cevap php

I Zend_framework (php) üzerinde bir web uygulama geliştiriyorum zaman i görüntüler (css dosyaları, js dosyaları, vb) dahil etmek zorunda.

Eklenmesi için çözüm (benim ev ile parametre "gibi küresel" saklama ve ana görüntünün göreli yolu ile birleştirilmiş oldu) mutlak yollarını i bir resim gerekli her zaman belirtmek oldu. I bu çözüm overpriced (her resim için böylece DNS hizmeti gitmek için) ve ben göreli yol soruna basit bir çözüm arıyorum anlamak gibi.

P.S. Sorun daha iyi aşağıdaki örnekte tarif edilebilir: I "http://myhost.com/" görüntüleri (: "/ images / logo.jpg." Görüntü yolu idi) normal görünecek için gidiyorum. ancak "http://myhost.com/users/" url (i görüntü yolu değiştirmek zorunda görüldü yapmak görülebilir olmayacak: "/ / images / logo.jpg...".

Id herkes ben bu sorunu çözebilir bilir, ben duymak mutluluk duyacağız.

Gorelik.

3 Cevap

Sen BaseUrl yardımcısı arıyoruz.

<?php echo $this->baseUrl('images/logo.jpg'); ?>

Site-kök-göreli yollar yerine göreli yolları kullanarak olmalıdır.

Sadece görüntü yolu bu nokta kaldırmak: ./images/logo.jpg olmalıdır /images/logo.jpg. Önde gelen nokta bu geçerli URL bir yol göreli yapar (bu nedenle sitede nerede bağlı değişimler gerekiyor). Bir nokta olmadan köküne bir yol göreli, bu yüzden bunu değiştirmek için herhangi bir ihtiyaç olmadan her yerde çalışır.

Ayrıca this related question bir göz ve cevapları bağlantıları var.

As i understand this solution is overpriced (for each picture to go the DNS service and so on) and i am looking for a simpler solution to the relative path problem.

Ben bunun doğru olduğuna inanmıyorum.

Eğer hostname dahil olmak üzere tam mutlak URL'ler kullanılarak olsa bile, her resmin üzerinde bir DNS araması tabi olmaz. Gerisi istemci işletim sistemi (ve bazı durumlarda, ben, tarayıcı düşünüyorum) sizin için bu şeyler önbelleğe emin.

Tabii ki, tam nitelikli URL kullanmak için hiçbir neden yok. Sadece sunucu kökünden mutlak gidin:

<?PHP
// somewhere in config.php or similar:
define('SITE_ROOT_URL_PATH','/myapplication');
...
// meanwhile, in some template
<img src="<?php echo SITE_ROOT_URL_PATH . '/images/foo.jpg'; ?>" />

App web kök çalışıyorsa, sadece'' için DITE_ROOT_URL_PATH ayarlanır

Imgurl ('foo.jpg'): Hatta bazı tuş vuruşlarını kaydetmek için küçük bir yardımcı işlev oluşturabilirsiniz.

Ben yıllardır bu yöntem kullanılır ve herhangi bir baş ağrısı vardı hiç. Ben soru şey eksik sürece, bu gitmek için yoludur.