मैं Codeigniter में इमेज फाइल्स, css, js, आदि कहाँ डालूँ?


144

सीएसएस फोल्डर और इमेज फाइल फोल्डर लगाना कहां तक ​​स्वीकार्य है? मैं व्यू फोल्डर के अंदर सोच रहा था? हालाँकि नियंत्रक हमेशा बेस url के लिए पथ को पुन: प्रेषित करता है इसलिए मुझे .html फ़ाइल में पथ निर्दिष्ट करना होगा जहाँ वह बैठता है, जो निरर्थक है।

जवाबों:


202

मेरा सेटअप इस तरह है:

  • आवेदन
  • प्रणाली
  • संपत्ति
    • js
    • imgs
    • सीएसएस

मेरे पास एक सहायक कार्य है जो बस मेरे सेटअप के आधार पर इसके लिए पूर्ण पथ देता है, कुछ इसी तरह से:

आवेदन / सहायकों / utility_helper.php:

function asset_url(){
   return base_url().'assets/';
}

मैं आम तौर पर समान रूटीन को एक ही फाइल में इसके समान रखूंगा और कोडिनाइटर के ऑटोलैड कॉन्फ़िगरेशन के साथ इसे ऑटोलॉड करूंगा।

नोट: base_url()पहुँच के लिए ऑटोलॉड URL सहायक ।

आवेदन / config / autoload.php:

$autoload['helper'] = array('url','utility');

फिर asset_url()आपके पूरे कोड तक पहुंच होगी ।


1
हाय एडी, मुझे आश्चर्य है कि आप अपना फ़ंक्शन कोड कहां डालते हैं .. क्या मुझे इसे file_helper.php में डाल देना चाहिए?
केब्यांग

3
हाय @KebyangBlabla मैंने अपना उत्तर थोड़ा और जानकारी के साथ अद्यतन किया है जो आपको मदद करनी चाहिए।
एडी

10
'बेसुरल ()' तक पहुँचने के लिए आपको 'यूआरएल' सहायक को भी शामिल करना होगा, जैसे:$autoload['helper'] = array('url', 'utility');
जेफरी

एक बेहतर हो सकता है कि वेब रूट में आपका एसेट्स फ़ोल्डर हो (मेरा public_html है) फोल्डर और फिर वेब रूट के ऊपर एक डायरेक्टरी में CI।
नैट नोलटिंग

3
में मामला दूसरों मेरी तरह हैं, स्पष्ट करने के लिए, तो आप इस तरह इसे उपयोग <= asset_url ();?> सीएसएस / css.css
JonYork

50

नहीं, विचार फ़ोल्डर के अंदर अच्छा नहीं है।

देखो: आपके पास अपने प्रोजेक्ट पर 3 बेसिक फोल्डर होने चाहिए:

सिस्टम // यह CI फ्रेमवर्क है इस फाइल को छूने के लिए ज्यादा कारण नहीं हैं

आवेदन // यह वह जगह है जहां आपका तर्क जाता है, जो फ़ाइलें एप्लिकेशन बनाती हैं ,

public // यह आपका documentroot होना चाहिए

सुरक्षा कारणों से अपनी रूपरेखा और अपने डॉक्यूमेंट के बाहर के अनुप्रयोग को रखने के लिए बेहतर है, (public_html, htdocs, public, www ... आदि)

अपने सार्वजनिक फ़ोल्डर के अंदर, आपको अपनी सार्वजनिक जानकारी डालनी चाहिए, ब्राउज़र क्या देख सकते हैं, फ़ोल्डर खोजने के लिए इसका सामान्य: चित्र, js, css; तो आपकी संरचना इस प्रकार होगी:

|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess

1
सार्वजनिक फ़ोल्डर में index.php क्या है? क्या वह 404 फ़ाइल है? धन्यवाद
DeLe

देरी के लिए क्षमा करें, लेकिन लो के लिए: T index.php फ़ाइल वह फ़ाइल होगी जो अनुरोध को पकड़ेगी और बाकी ढांचे को कॉल करेगी।
जुआन जो

@ जुआन जो .. मैं CodeIgniter-3.0.6 का उपयोग कर रहा हूँ public। मुझे किसी भी फ़ोल्डर का नाम नहीं मिल रहा है । मुझे एक ही नाम के साथ एक फ़ोल्डर जोड़ने के लिए कोई समस्या नहीं है।
अखिल विजय

@AkhilVijay आप इसे अपने कोडिनिटर फ़ोल्डर में नहीं ढूंढेंगे, जब आप इसे किसी भी सर्वर में तैनात करेंगे तो
अनवर हुसैन

कोडिगन के साथ काम करने का सबसे अच्छा तरीका यह है कि सार्वजनिक फ़ोल्डर को .htaccessहटाने /index.php?और कॉल करने के लिएbase_url().'public/yourfolder';
रॉबर्ट ब्लास्को विलारोया

16

यह है कि मैं सार्वजनिक संपत्ति को कैसे संभालता हूं। यहाँ मैं फाल्कन PHP का उपयोग करता हूँ की बूटस्ट्रैप विधि का उपयोग करता हूँ।

फ़ोल्डर संरचना

|-.htaccess*
|-application/
|-public/
  |-.htaccess**
  |-index.php***
  |-css/
  |-js/
  |-img/
  |-font/
  |-upload/
|-system

फ़ाइलों को संपादित करने के लिए

  1. .htaccess*

    परियोजना के सभी अनुरोधों को सार्वजनिक / निर्देशिका में फिर से लिखा जाएगा, जिससे यह दस्तावेज़ जड़ हो जाएगा। यह कदम यह सुनिश्चित करता है कि आंतरिक परियोजना फ़ोल्डर सार्वजनिक देखने से छिपे रहें और इस प्रकार इस तरह के सुरक्षा खतरों को समाप्त कर दें। - फाल्कोनकप डॉक्टर

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule  ^$ public/    [L]
        RewriteRule  (.*) public/$1 [L]
    </IfModule>
  2. .htaccess**

    अनुरोधित फ़ाइल मौजूद है और यदि यह करता है, तो नियमों की जांच होगी, यह वेब सर्वर मॉड्यूल द्वारा फिर से लिखा जाना नहीं है। - फाल्कोनकप डॉक्टर

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php/$1 [QSA,L]
    </IfModule>
  3. index.php***

    applicationपथ और systemपथ को संशोधित करें ,

    $system_path = '../system';
    $application_folder = '../application';

अब आप publicफ़ोल्डर का उपयोग करें base_url()."public/[YOUR ASSET FOLDER]"

उम्मीद है की यह मदद करेगा :)


क्या आपने उपरोक्त कोड का परीक्षण किया है, मुझे लगता है कि अंतिम पंक्ति में कोई त्रुटि है, आप सभी अनुरोधों को पुनर्निर्देशित कर सकते हैं /publicइसलिए base_url ()."public/[...! यह सिर्फ होना चाहिए base_url ()."/[YOUR ASSET FOLDER]"
केर्कोच

12

मैं आमतौर पर अपनी सभी फाइलों को एप्लिकेशन रूट में "संपत्ति" फ़ोल्डर में डाल देता हूं, और फिर मेरे लिए उन फाइलों को इंगित करने के लिए एक एसेट_ हेल्पर का उपयोग करना सुनिश्चित करता हूं। यह वही है जो CodeIgniter सुझाव देता है।


7

कोई नहीं कहता है कि आपको .htacces को संशोधित करने और निर्देशिका को फिर से लिखने की स्थिति में जोड़ने की आवश्यकता है। मैंने "सिस्टम", "एप्लिकेशन", "index.php" के साथ रूट निर्देशिका में "सार्वजनिक" बनाया है। और .htaccess फ़ाइल को इस तरह संपादित किया:

RewriteCond $1 !^(index\.php|public|robots\.txt)

अब आपको बस कॉल करना है <?php echo base_url()."/public/yourdirectory/yuorfile";?> आप अपनी पसंद के अनुसार "सार्वजनिक" डायर के अंदर उपनिर्देशिका जोड़ सकते हैं।


मैं बहुत वर्षों से देर से हूँ, लेकिन अगर कोई इसे पढ़ रहा है, तो यह उत्तर मेरा प्रारंभिक समाधान था, लेकिन यदि आप वर्चुअल होस्ट के माध्यम से एक्सेस का प्रबंधन कर रहे हैं, तो मुझे लगता है कि वर्चुअल होस्ट को सार्वजनिक फ़ोल्डर में इंगित करना और रखना बेहतर है .htaccess config। वैसे भी
अपवोट

5

भले ही आप सीएसएस फ़ाइल डालते हैं, आप बस link_tag () नामक कोडइंटराइटर "html" सहायक का उपयोग कर सकते हैं। आप इस सहायक को कुछ इस तरह लागू करेंगे:

echo link_tag('folder/subfolder/stylesheet.css');

यह आप पर निर्भर करता है कि आप सबसे उपयुक्त जगह (अपनी राय में) सीएसएस फ़ाइल का पता लगा सकते हैं। आपको "html" हेल्पर को या तो ऑटोलॉगड करना होगा या इसे इस्तेमाल करने के लिए अलग से लोड करना होगा।

लोग इसे प्राप्त करने के लिए base_url () के उपयोग का सुझाव देते रहते हैं लेकिन यह वास्तव में ऐसा करने के लिए "CodeIgniter" तरीका नहीं है (मुझे लगता है कि इस प्रश्न में कुछ डुप्लिकेट हैं)। यह काम करेगा लेकिन एक रूपरेखा का उपयोग करने का एक कारण इसके भीतर पूर्व-निर्मित कार्यों का उपयोग करना है।

इस तरह का काम करने के लिए कोडिग्निटर में कई हेल्पर्स होते हैं।


4

एक फ़ोल्डर को किसी भी नाम से जोड़ें जैसे कि सार्वजनिक और .htaccess फ़ाइल को जोड़ें और इसे सभी साधनों से अनुमति दें , इस फ़ोल्डर में आपकी सभी फाइलें और सभी फ़ोल्डर त्रुटि नहीं देंगे। प्रवेश वर्जित है! इसे इस तरह से उपयोग करें

<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>

4

मैं नवीनतम संस्करण 3.1.0 का उपयोग कर रहा हूँ। इसका फ़ोल्डर संरचना है:

  • प्रणाली
  • आवेदन
  • उपयोगकर्ता गाइड
  • संपत्ति
    • इमेजिस
    • js
    • सीएसएस

वहीं आपको एसेट्स फोल्डर के अंदर इमेजेस, css और js फाइल्स डालनी चाहिए।


3

मैं निम्नलिखित फ़ोल्डर संरचना का उपयोग करता हूं:

application 
system 
static
    admin
        js
        css
        images
    public
        js
        css
        images
    uploads
        original
        thumbs

2

(मैं Codeigniter के लिए नया हूं, इसलिए मुझे नहीं पता कि यह सबसे अच्छी सलाह है)

मैं अपने सार्वजनिक फ़ोल्डर में सार्वजनिक रूप से उपलब्ध फाइलें रखता हूं। यह उनके लिए तर्कसंगत है, और मैं कुछ के लिए Codeigniter का उपयोग नहीं करना चाहता, जिसके लिए मुझे इसका उपयोग करने की आवश्यकता नहीं है।

डायरेक्टरी ट्री इसे पसंद करता है:

  • / आवेदन /
  • /जनता/
  • / सार्वजनिक / सीएसएस /
  • / सार्वजनिक / img /
  • / सार्वजनिक / js /
  • / System /

केवल वही फ़ाइलें जिन्हें मैं रखता / सार्वजनिक करता / करती हूं वे कोडिग्नेटर की index.php और मेरी .htaccess फ़ाइल हैं:

RewriteEngine On
RewriteBase /

RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]

RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]

2

आप अपने प्रोजेक्ट की डायरेक्टरी में सीएसएस फोल्डर को एसेस्ट फोल्डर के अंदर रख सकते हैं (आप इसे किसी भी नाम से)।

- ci_app
- application 
- views      
- assets 
  - css 
    - style.css 

... जब आप किसी पृष्ठ में उस फ़ाइल को लोड करना चाहते हैं, तो आप इस तरह से base_url () फ़ंक्शन का उपयोग कर सकते हैं: <head> <link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'> </head> और आप इस रूप में config.php फ़ाइल में अपनी परियोजना के base_url जोड़ना सुनिश्चित कर रहे हैं:

$config['base_url'] = 'http://localhost/ci_app';

0

नमस्ते हमारे स्टिररक्चर एप्लिकेशन, सिस्टम, user_guide की तरह है

सभी फ़ोल्डरों के पास एक फ़ोल्डर नाम की संपत्ति बनाएं और फिर इस संपत्ति फ़ोल्डर के अंदर सीएसएस और जावास्क्रिप्ट बनाएं और चित्र फ़ोल्डर आपके सभी सीएसएस जेएस को फ़ोल्डरों में डाल दें।

अब शीर्ष लेख पर जाएँ। सीपीपी और सीएसएस को इस तरह से कॉल करें।

<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"> 

-2

link_tag()सहायक स्पष्ट रूप से जिस तरह से यह करने के लिए है। अपना css उस जगह पर रखें जहाँ वह आमतौर पर site_root / css / में होता है और फिर सहायक का उपयोग करता है:

से CodeIgniter डॉक्स ...

echo link_tag('css/mystyles.css');

उत्पादन

<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.