Tôi để tập tin hình ảnh, css, js, v.v. ở đâu trong Codeigniter?


144

Nơi nào có thể chấp nhận để đặt thư mục css và thư mục tệp hình ảnh? Tôi đã suy nghĩ trong thư mục xem? Tuy nhiên, bộ điều khiển luôn định tuyến lại đường dẫn đến url cơ sở vì vậy tôi phải chỉ định đường dẫn trong tệp .html đến vị trí của nó, nó là dự phòng.

Câu trả lời:


202

Tôi có một thiết lập như thế này:

  • ứng dụng
  • hệ thống
  • tài sản
    • js
    • tôi
    • css

Sau đó, tôi có một hàm trợ giúp chỉ đơn giản trả về đường dẫn đầy đủ đến tùy thuộc vào thiết lập của tôi, một cái gì đó tương tự như:

ứng dụng / người trợ giúp / Utility_helper.php:

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

Tôi thường sẽ giữ các thói quen phổ biến tương tự như thế này trong cùng một tệp và tự động tải nó với cấu hình tự động tải của codeigniter.

Lưu ý: trình trợ giúp URL tự động tải để base_url()truy cập.

ứng dụng / config / autoload.php:

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

Sau đó, bạn sẽ có quyền truy cập asset_url()trong suốt mã của bạn.


1
chào eddie, tôi tự hỏi bạn đặt mã chức năng của mình ở đâu .. tôi có nên đặt nó trong file_helper.php không?
kebyang

3
Xin chào @KebyangBlabla Tôi đã cập nhật câu trả lời của mình với một chút thông tin sẽ giúp bạn.
Eddie

10
Để có quyền truy cập vào 'baseurl ()', bạn cũng cần bao gồm người trợ giúp 'url', như thế này:$autoload['helper'] = array('url', 'utility');
Jeffrey

Một cách tốt hơn có thể là có một thư mục tài sản của bạn trong thư mục gốc web (của tôi là public_html) và sau đó là CI trong một thư mục phía trên thư mục gốc.
Nate Nolting

3
Trong trường hợp những người khác giống tôi, để làm rõ, bạn truy cập nó như thế này <? = Property_url ();?> Css / css.css
JonYork

50

Không, bên trong thư mục lượt xem không tốt.

Nhìn: Bạn phải có 3 thư mục cơ bản trong dự án của bạn:

hệ thống // Đây là khung CI không có nhiều lý do để chạm vào tệp này

application // đây là nơi logic của bạn đi, các tệp tạo ra ứng dụng ,

công khai // đây phải là tài liệu của bạn

Vì lý do bảo mật, tốt hơn hết là giữ khung của bạn và ứng dụng bên ngoài tài liệu của bạn, (public_html, htdocs, public, www ... vv)

Trong thư mục công cộng của bạn, bạn nên đặt thông tin công khai của mình, những gì trình duyệt có thể thấy, thông thường để tìm các thư mục: hình ảnh, js, css; vì vậy cấu trúc của bạn sẽ là:

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

1
index.php trong thư mục công cộng là gì? đó là tập tin 404 phải không? cảm ơn
DeLe

Xin lỗi vì sự chậm trễ, nhưng đối với lo: T Tệp index.php sẽ là tệp sẽ bắt được yêu cầu và sẽ gọi phần còn lại của khung.
Juan Jo

@Juan Jo .. Tôi đang sử dụng CodeIgniter-3.0.6. Tôi không thể tìm thấy bất kỳ thư mục nào có tên public. Có vấn đề gì khi thêm một thư mục có cùng tên.
Akhil Vijay

@AkhilVijay bạn sẽ không tìm thấy nó trong thư mục codeigniter của bạn, thư mục sẽ là khi bạn triển khai nó trong bất kỳ máy chủ nào
Anwar Hossain

cách tốt nhất để làm việc với codeigniter đó là .htaccessxóa /index.php?và gọi thư mục công cộng vớibase_url().'public/yourfolder';
Robert Blasco Villarroya

16

Đây là cách tôi xử lý các tài sản công cộng. Ở đây tôi sử dụng phương thức Bootstrap của Phalcon PHP .

Cấu trúc thư mục

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

Tập tin cần chỉnh sửa

  1. .htaccess*

    Tất cả các yêu cầu cho dự án sẽ được viết lại vào thư mục chung / thư mục làm cho nó trở thành tài liệu gốc. Bước này đảm bảo rằng các thư mục dự án nội bộ vẫn bị ẩn khỏi chế độ xem công khai và do đó loại bỏ các mối đe dọa bảo mật thuộc loại này. - Phalconphp Đốc

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

    Các quy tắc sẽ kiểm tra xem tệp được yêu cầu có tồn tại không và nếu có, nó không phải được viết lại bởi mô-đun máy chủ web. - Phalconphp Đốc

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

    Sửa đổi applicationđường dẫn và systemđường dẫn như,

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

Bây giờ bạn sử dụng publicthư mục nhưbase_url()."public/[YOUR ASSET FOLDER]"

Hi vọng điêu nay co ich :)


Bạn đã kiểm tra mã trên chưa, tôi nghĩ có lỗi ở dòng cuối cùng, bạn chuyển hướng tất cả các yêu cầu đến /publicvậy tại sao base_url ()."public/[...! Nó nên được chỉ base_url ()."/[YOUR ASSET FOLDER]".
Kerkouch

12

Tôi thường đặt tất cả các tệp của mình vào thư mục "tài sản" trong thư mục gốc của ứng dụng và sau đó tôi đảm bảo sử dụng Asset_Helper để trỏ đến các tệp đó cho tôi. Đây là những gì CodeIgniter gợi ý.


7

Không ai nói rằng bạn cần sửa đổi .htacces và thêm thư mục trong điều kiện viết lại. Tôi đã tạo một thư mục "công khai" trong thư mục gốc cùng với "system", "application", "index.php". và chỉnh sửa tệp .htaccess như thế này:

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

Bây giờ bạn chỉ cần gọi <?php echo base_url()."/public/yourdirectory/yuorfile";?> Bạn có thể thêm thư mục con bên trong thư mục "công khai" tùy thích.


Tôi trễ một triệu năm, nhưng nếu có ai đọc nó, câu trả lời này là giải pháp ban đầu của tôi, nhưng nếu bạn đang quản lý quyền truy cập thông qua máy chủ ảo, tôi nghĩ nên đưa máy chủ ảo vào thư mục công cộng và giữ lại cấu hình .htaccess. Dù sao đi nữa, vì câu trả lời này chỉ cho tôi giải pháp
Vertig0

5

Bất kể bạn đặt tệp CSS ở đâu, bạn chỉ cần sử dụng trình trợ giúp "html" CodeIgniter có tên là link_tag (). Bạn sẽ áp dụng người trợ giúp này một cái gì đó như thế này:

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

Tùy thuộc vào bạn để xác định vị trí tệp CSS ở nơi thích hợp nhất (theo ý kiến ​​của bạn). Bạn sẽ phải tự động tải trình trợ giúp "html" hoặc tải riêng nó để sử dụng nó.

Mọi người cứ đề xuất việc sử dụng base_url () để đạt được điều này nhưng thực sự không phải là cách "CodeIgniter" để làm điều đó (tôi nghĩ rằng câu hỏi này có một vài bản sao). Điều đó sẽ hoạt động nhưng một trong những lý do để sử dụng khung là sử dụng các hàm được tạo sẵn bên trong nó.

Có rất nhiều người trợ giúp trong codeigniter để làm điều này.


4

thêm một thư mục bất kỳ tên nào, ví dụ công khai và thêm tệp .htaccesscho phép ghi từ tất cả ý nghĩa của nó, trong thư mục này tất cả các tệp và tất cả thư mục sẽ không bị lỗi Truy cập bị cấm! sử dụng nó như thế này

<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

Tôi đang sử dụng phiên bản mới nhất của CodeIgniter 3.1.0. Cấu trúc thư mục của nó là:

  • hệ thống
  • ứng dụng
  • người dùng
  • tài sản
    • hình ảnh
    • js
    • css

Đó là nơi bạn nên đặt các tệp hình ảnh, css và js trong thư mục tài sản.


3

Tôi sử dụng cấu trúc thư mục sau:

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

2

(Tôi chưa quen với Codeigniter, vì vậy tôi không biết đây có phải là lời khuyên tốt nhất không)

Tôi giữ các tập tin có sẵn công khai trong thư mục công cộng của tôi. Việc họ ở đó là hợp lý và tôi không muốn sử dụng Codeigniter cho những thứ tôi không cần sử dụng.

Cây thư mục trông như thế này:

  • /ứng dụng/
  • /công cộng/
  • / công khai / css /
  • / công khai / img /
  • / công khai / js /
  • / hệ thống /

Các tệp duy nhất tôi giữ trong / công khai / là index.php của Codeigniter và tệp .htaccess của tôi:

RewriteEngine On
RewriteBase /

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

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

2

bạn có thể đặt thư mục css bên trong thư mục assest (bạn đặt tên bất kỳ tên nào) trong thư mục của dự án của bạn là:

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

... khi bạn muốn tải tệp đó trong một trang, bạn có thể sử dụng hàm base_url () theo cách này: <head> <link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'> </head> và bạn chắc chắn sẽ thêm base_url của dự án của bạn vào tệp config.php như sau:

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

0

Xin chào, cấu trúc của chúng tôi giống như Ứng dụng, hệ thống, user_guide

tạo một tài sản tên thư mục chỉ gần tất cả các thư mục và sau đó bên trong thư mục tài sản này tạo thư mục css và javascript và hình ảnh đặt tất cả css js của bạn vào bên trong các thư mục

Bây giờ hãy vào tiêu đề.php và gọi css như thế này.

<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

Người link_tag()trợ giúp rõ ràng là cách để làm điều này. Đặt css của bạn vào nơi nó thường thuộc, trong site_root / css / và sau đó sử dụng trình trợ giúp:

Từ các tài liệu CodeIgniter ...

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

Đầu ra

<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.