Yanıtlar:
Ben böyle bir kurulum var:
Sonra benim kurulum, benzer bir şey bağlı olarak bu tam yolu döndüren bir yardımcı işlevi var:
application / yardımcılar / utility_helper.php:
function asset_url(){
return base_url().'assets/';
}
Genellikle buna benzer ortak rutinleri aynı dosyada tutacağım ve codeigniter'in otomatik yükleme yapılandırmasıyla otomatik olarak yükleyeceğim.
Not:
base_url()
erişim için otomatik yükleme URL yardımcısı .
Uygulama / yapılandırma / autoload.php:
$autoload['helper'] = array('url','utility');
Daha sonra asset_url()
kodunuz boyunca erişime sahip olacaksınız .
$autoload['helper'] = array('url', 'utility');
Hayır, views klasörünün içinde iyi değil.
Bakın: Projenizde 3 temel klasörünüz olması gerekir:
system // Bu CI çerçevesi bu dosyalara dokunmak için fazla bir neden yok
uygulama // burası mantığınızın gittiği yer, uygulamayı yapan dosyalar ,
public // bu sizin doküman kökünüz olmalı
Güvenlik nedeniyle çerçevenizi ve uygulamanızı doküman kökünüzün dışında tutmak daha iyidir (public_html, htdocs, public, www ... etc)
Ortak klasörünüzün içine, genel bilgilerinizi, tarayıcıların görebileceklerini, klasörleri bulmak için ortak olanlarını koymalısınız: images, js, css; böylece yapınız şöyle olacaktır:
|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
public
. Aynı ada sahip bir klasör eklemek için herhangi bir sorun var.
.htaccess
kaldırmak /index.php?
ve ortak klasörü çağırmak için yapıyorbase_url().'public/yourfolder';
Kamu varlıklarını bu şekilde ele alıyorum. Burada Phalcon PHP'nin Bootstrap yöntemini kullanıyorum.
|-.htaccess*
|-application/
|-public/
|-.htaccess**
|-index.php***
|-css/
|-js/
|-img/
|-font/
|-upload/
|-system
.htaccess*
Projeye yapılan tüm istekler , belgeyi kök haline getiren genel / dizine yeniden yazılır . Bu adım, dahili proje klasörlerinin genel izlemeden gizli kalmasını sağlar ve böylece bu tür güvenlik tehditlerini ortadan kaldırır. - Phalconphp SPORCU BİLGİLERİ
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
.htaccess**
Kurallar, istenen dosyanın var olup olmadığını kontrol eder ve eğer varsa, web sunucusu modülü tarafından yeniden yazılması gerekmez. - Phalconphp SPORCU BİLGİLERİ
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>
index.php***
Değiştir application
yolunu ve system
sıra yolunu,
$system_path = '../system';
$application_folder = '../application';
Şimdi public
klasörü şu şekilde kullanıyorsunuz:base_url()."public/[YOUR ASSET FOLDER]"
Bu yardımcı olur umarım :)
/public
neden tüm istekleri yönlendiriyorsunuz base_url ()."public/[...
? Sadece olmalı base_url ()."/[YOUR ASSET FOLDER]"
.
Genellikle böyle tüm dosyalarımı uygulama kökündeki bir "varlıklar" klasörüne koydum ve sonra bu dosyaları benim için işaret etmek için bir Asset_Helper kullandığınızdan emin olun . CodeIgniter'ın önerdiği budur.
Hiç kimse .htacces'i değiştirmeniz ve dizini yeniden yazma koşulunda eklemeniz gerektiğini söylemez. Kök dizinde "system", "application", "index.php" ile birlikte "public" dizinini oluşturdum. ve .htaccess dosyasını şu şekilde düzenledi:
RewriteCond $1 !^(index\.php|public|robots\.txt)
Şimdi sadece aramak zorunda <?php echo base_url()."/public/yourdirectory/yuorfile";?>
"public" dir içine istediğiniz gibi alt dizin ekleyebilirsiniz.
CSS dosyasını nereye koyacağınıza bakılmaksızın, link_tag () adlı CodeIgniter "html" yardımcısını kullanabilirsiniz. Bu yardımcıya şöyle bir şey uygularsınız:
echo link_tag('folder/subfolder/stylesheet.css');
CSS dosyasını en uygun yerde (size göre) bulmak size kalmıştır. "Html" yardımcısını otomatik olarak yüklemeniz veya kullanmak için ayrı olarak yüklemeniz gerekir.
İnsanlar bunu başarmak için base_url () kullanımını öneriyoruz ama aslında bunu yapmak için gerçekten "CodeIgniter" yolu değil (Ben bu sorunun birkaç kopyaları olduğunu düşünüyorum). Bu işe yarayacaktır, ancak bir çerçeve kullanmanın nedenlerinden biri, içinde önceden yapılmış işlevleri kullanmaktır.
Codeigniter'de bu tür şeyleri yapmak için birçok yardımcı var.
bir klasöre herhangi bir isim ekleyin, örneğin herkese açık ve .htaccess dosyası ekleyin ve her şeyden izin verin , bu klasörde tüm dosyalarınız ve tüm klasörleriniz hata vermeyecektir Erişim yasak! böyle kullan
<link href="<?php echo base_url(); ?>application/public/css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="<?php echo base_url(); ?>application/public/js/javascript.js"></script>
(Ben Codeigniter için yeniyim, bu yüzden bunun en iyi tavsiye olup olmadığını bilmiyorum)
Herkese açık dosyaları ortak klasörümde saklıyorum. Orada olmaları mantıklı ve ben kullanmam gerekmeyen bir şey için Codeigniter kullanmak istemiyorum.
Dizin ağacı şöyle görünür:
/ Public / dizininde tuttuğum tek dosyalar Codeigniter's index.php ve .htaccess dosyam:
RewriteEngine On
RewriteBase /
RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]
RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]
css klasörünü projenizin dizinindeki assest klasörünün içine koyabilirsiniz (herhangi bir ad verebilirsiniz):
- ci_app
- application
- views
- assets
- css
- style.css
... bu dosyayı bir sayfaya yüklemek istediğinizde, base_url () işlevini şu şekilde kullanabilirsiniz:
<head>
<link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'>
</head>
ve projenizin base_url dosyasını config.php dosyasına şu şekilde ekleyeceğinizden emin olabilirsiniz:
$config['base_url'] = 'http://localhost/ci_app';
Merhaba bizim yapımız Uygulama, sistem, kullanıcı_guide gibidir
tüm klasörlerin hemen yanında bir klasör adı varlıkları oluşturun ve sonra bu varlıklar klasörünün içinde css ve javascript ve resim klasörü oluşturun tüm css js klasörlerinizi yerleştirin
Şimdi header.php adresine gidin ve css'i böyle çağırın.
<link rel="stylesheet" href="<?php echo base_url();?>assets/css/touchTouch.css">
<link rel="stylesheet" href="<?php echo base_url();?>assets/css/style.css">
<link rel="stylesheet" href="<?php echo base_url();?>assets/css/camera.css">
link_tag()
Yardımcı açıkça bunu yapmak için bir yoldur. Css'nizi genellikle ait olduğu yere site_kökü / css / dizinine koyun ve yardımcıyı kullanın:
Gönderen CodeIgniter'ın docs ...
echo link_tag('css/mystyles.css');
Çıktı
<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />