2012-01-13 5 views
6

शुभ दिन, मैं स्मार्टी के साथ कोडइग्निटर सीख रहा हूं। मेरे सीएसएस फ़ाइलकोडइग्निटर + सीएसएस

/App01/application/views/css/main.css 

में संग्रहित है मेरी सीएसएस का उपयोग मैं लिंक करने के लिए:

<link rel="stylesheet" type="text/css" href="http://localhost:88/APP1/application/views/css/layout.css" media="screen" /> 

लेकिन सीएसएस अपने पन्ने पर लागू नहीं होता। जब मैं सीएसएस यूआरएल खोलता हूं, तो मुझे एक संदेश मिलता है:

Forbidden 
You don't have permission to access /APP1/application/views/css/layout.css on this server. 

कृपया, मैं क्या गलत कर रहा हूं? मैं अपने सीएसएस को दृश्य के साथ एक साथ रखना चाहता हूं क्योंकि भविष्य में मैं सीखना चाहता हूं कि कई थीम कैसे बनाएं और मुझे लगता है कि सीएसएस को थीम फ़ोल्डर में रखा जाना चाहिए।

क्या मैं कुछ स्मार्टy वैरिएबल के साथ सीएसएस फ़ाइल में यूआरएल पथ को प्रतिस्थापित कर सकता हूं ताकि जब मैं अपना एप्लीकेशन ले जाऊं तो मुझे मैन्युअल रूप से टेम्पलेट्स में सीएसएस यूआरएल पथ बदलने की ज़रूरत नहीं है?

अग्रिम धन्यवाद! Vojtech

+3

+1 शुभ दिन के साथ धागा शुरू करने के लिए। – SpaceBeers

उत्तर

12

कोडइग्निटर के /application फ़ोल्डर में कुछ भी सीमा से बाहर माना जाना चाहिए। सबसे अच्छा सुरक्षा के लिए, आप वास्तव में इस जैसे एक संरचना में आपके www या public_html फ़ोल्डर ऊपर /application रखने पर विचार करना चाहिए:

– application 
    – controllers 
    – models 
    – views 
    – ... 
– system 
    – core 
    – libraries 
    – ... 
– public_html 
    – index.php 

यह आपके एप्लिकेशन कोड सुरक्षित बनाता है।

मैं आपकी क्लाइंट-साइड स्क्रिप्ट और सीएसएस को सार्वजनिक फ़ोल्डर में बनाने की सलाह दूंगा। उदाहरण के लिए public_html/css और public_html/js। या, यदि आप विषय मार्ग पर जाना चाहते हैं, तो संभवतः प्रत्येक सीएसएस फ़ाइल को थीम के नाम के रूप में नाम दें, इसलिए आपके पास css/theme1.css और css/theme2.css होगा।

आपकी साइट हमेशा किसी डोमेन के रूट से काम करेंगे, तो आप सिर्फ उपयोग कर सकते हैं:

<link rel="stylesheet" type="text/css" href="/css/layout.css" media="screen" /> 

लेकिन अगर आपको लगता है कि आप के आसपास चीजों के सभी प्रकार चलती करने जा रहे हैं, तो पर विचार Smarty को भेजने से पहले अपने नियंत्रक में फ़ाइल स्थान तैयार करना।

$this->load->helper('url'); 
$this->smarty->assign('css_file', base_url("css/theme1.css")); 

कि वापस आ जाएगी:

http://localhost/app1/css/theme.css 

या जो भी आपके CodeIgniter यूआरएल है।

+0

आपकी सलाह थॉमस के लिए बहुत धन्यवाद, इससे मुझे समझने में बहुत मदद मिली! – Vojtech

+0

आपका स्वागत है। –

0

अपने सर्वर दस्तावेज़ रूट फ़ोल्डर में एक सिम्लिंक जोड़ने का प्रयास करें। (www/public_html/htdocs)

cd (document root folder) 
ln -s (/App01/application/views/css) . 

इस तरह आप अपने सीएसएस फ़ोल्डर तक पहुंच सकते हैं और वर्तमान संरचना को रख सकते हैं।

1

यह सीएसएस को कोडनिर्देशक से जोड़ने में मदद करेगा।

link_tag संसाधनों को जोड़ने के लिए उपयोग किया जाता है और आप helper फ़ंक्शन का उपयोग कर सकते हैं। उदाहरण के लिए एचटीएमएल सहायक, यूआरएल सहायक, ईमेल सहायक, आदि

अपने नियंत्रक में आप की तरह

<?php 
class Home extends CI_Controller{ 
    public function helper(){ 
     $this->load->helper('html');  
     $this->load->view('index'); 
    } 
} 
?> 

और अपने index.phpview फ़ोल्डर में उपयोग link_tag कीवर्ड एक समारोह कुछ बनाना होगा।

<html> 
<head> 
<title></title> 
<?php echo link_tag('App01/application/views/css/main.css');?> 
</head> 
<body> 
    <?php 
    ....... 
    ?> 
</body> 
</html>