2012-01-13 26 views
6

Chúc ngày tốt lành, tôi đang học CodeIgniter với Smarty. file CSS của tôi được lưu trữ trongCodeIgniter + CSS

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

Để liên kết CSS của tôi, tôi sử dụng:

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

Nhưng CSS không được áp dụng trên trang của mình. Khi tôi mở CSS URL, tôi nhận được thông báo:

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

Làm ơn, tôi đang làm gì sai? Tôi muốn giữ CSS của tôi cùng với khung nhìn vì trong tương lai tôi muốn tìm hiểu cách tạo nhiều chủ đề và tôi điều CSS nên được giữ trong thư mục chủ đề.

Tôi có thể thay thế đường dẫn URL thành tệp CSS bằng một số biến Smarty để khi tôi di chuyển ứng dụng của mình, tôi không cần thay đổi đường dẫn URL CSS trong mẫu theo cách thủ công không?

Cảm ơn bạn trước! Vojtech

+3

+1 để bắt đầu chuỗi có ngày tốt lành. – SpaceBeers

Trả lời

12

Bất kỳ nội dung nào trong thư mục /application của CodeIgniter đều phải được xem là vượt quá giới hạn. Đối với bảo mật tốt nhất, bạn thực sự nên xem xét giữ /application trên của bạn thư mục www hoặc public_html trong một cấu trúc như thế này:

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

Điều này làm cho mã ứng dụng của bạn an toàn hơn.

Tôi khuyên bạn nên tạo tập lệnh phía máy khách và CSS trong thư mục công khai. Ví dụ: public_html/csspublic_html/js. Hoặc, nếu bạn muốn đi xuống tuyến đường chủ đề, có thể đặt tên cho mỗi tệp CSS là tên của chủ đề, vì vậy bạn sẽ có css/theme1.csscss/theme2.css.

Nếu trang web của bạn sẽ luôn luôn làm việc từ thư mục gốc của một tên miền, sau đó bạn có thể chỉ cần sử dụng:

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

Nhưng nếu bạn cảm thấy rằng bạn đang đi để được di chuyển tất cả các loại vật xung quanh, sau đó xem xét chuẩn bị vị trí tệp trong bộ điều khiển của bạn trước khi gửi đến Smarty.

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

Đó sẽ trở lại:

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

Hoặc bất cứ URL CodeIgniter của bạn.

+0

Rất cám ơn lời khuyên của bạn Thomas, nó đã giúp tôi rất nhiều điều để hiểu! – Vojtech

+0

Bạn được chào đón. –

0

Thử thêm một liên kết tượng trưng vào thư mục gốc của tài liệu máy chủ của bạn. (www/public_html/htdocs)

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

Bằng cách này bạn có thể truy cập vào thư mục css và giữ cấu trúc hiện tại.

1

Điều này sẽ giúp liên kết css với người viết mã.

link_tag được sử dụng để liên kết tài nguyên và bạn có thể sử dụng chức năng helper. Ví dụ như trình trợ giúp html, trình trợ giúp url, trình trợ giúp email, v.v.

Trong điều khiển của bạn, bạn phải tạo một chức năng giống như

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

index.php trong view thư mục từ khóa sử dụng link_tag của bạn.

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