Cuma, 13 Kasım 2009

View Kullanırken Sabit Dosyalara Erişim

 

CodeIgniter`da imaj, css, javascript gibi sabit tasarım dosyalara ulaşım için bir çok yol vardır. Kullandığımız şablon dosyalarında, view dosyalarında genellikle kök dizine göre aşağıdaki gibi ilişkisel tanımlama yaparız.

<img src="/image/logo.gif" alt="Logo" />

Bu metod sabit dosyalar kök dizindeyse düzgün çalışır ancak alt dizinlere yüklemeye başladığınızda -ki, derli toplu bir yerleşim için alt dizin uygulaması daha çok tavsiye edilir- sorunlar çıkacaktır. Çözüm için çağırdığınız dosyaya ulaşım için CodeIgniter`ın URL helper dosyasını kullanarak, her adresin başına base_url() fonksiyonunu girmeniz gereklidir. Eğer dosyalarınızın sabit_dizin isimli bir dizin altında olduğunu kabul edersek :

<img src="<?=base_url();?>sabit_dizin/image/logo.gif" alt="Logo" />

Projeniz büyüdükçe bir kaç adres için girdiğiniz bu değer, tüm adreslere girilmesi gerektiği için ciddi bir sorun olarak karşınıza dikilecektir. Bunun yerine site şablonunuzda bulunan view dosyasının head kısmına base href değeri olarak fonksiyonu girerseniz, sorun çözülecektir:

 <head>
  <base href="<?=base_url();?>"> 
 </head> 

Böylelikle sitemizin ana adresini tarayacıya taratmış oluruz. Bundan sonra sabit bir dosya çağırmamız gerekirse base_url() fonksiyonunu tekrar çağırmadan adreslerimizi ilişkisel tanımlama yaparak kullanabiliriz:

<img src="sabit_dizin/image/logo.gif" alt="Logo" />

Dikkat etmeniz gereken nokta, src kısmına yazan adres değerinin ters bölü işareti ile başlamıyor olmasıdır. Çünkü base_url()`den bu değer otomatik olarak gelecektir.

Bu yazı Phil Sturgeon`un blogundan çevrilmiştir.

Yorumlar

base_url() fonksiyonu yerine site_url() fonksiyonu kullanılabilir.

ör: site_url('image/logo.gif
');

Ben hala beceremedim bu işi :/

views/login.php altındaki sayfama 
views/css/login.css 
yolundaki css'i yükleyemedim hala nedendir bu?
base_url().'css/login.css'
site_url ('css/login.css');
gibi denemeler yaptım. Bir türlü çalışmıyor :/

@Can: css, js, images gibi dosyaların yeri application dizininin altındaki dizinler değildir. Bu dosyalarını kök (root) üzerinde oluşturacağın klasörlere yerleştirmelisin.

Burada anlattığım şekilde bir htaccess dosyası yapman gerekir.

Yorum Ekle