2012-09-13 22 views
1

我在解決我的應用程序中的路徑時遇到了問題。codeigniter - APPPATH返回控制器後的路徑

我使用APPPATH函數來讀取/寫入我的圖像的字符串路徑在我的數據庫。問題是,APPPATH回放功能控制器

這裏後,我對獲得CSS

<link rel="stylesheet" type="text/css" href="<?php echo '../' . APPPATH.'_data/css/style.css'; ?>" /> 

,當我去http://localhost/project/index.php/home它的偉大工程 CSS鏈接http://localhost/project/application/_data/css/style.css功能這是正確的

但後來我有這等控制器

http://localhost/project/index.php/member/index/1 

CSS文件路徑有是

href="<?php echo '../../../' . APPPATH."_data/css/style.css"; ?>" 

,因爲其他明智我的鏈接的CSS去

http://localhost/project/index.php/member/application/_data/css/style.css 

我用一個簡單的模板結構,在那裏我有我的頭/內容/頁腳在包括在視圖中的子文件夾我正在向內容發送數據。相當標準的東西。我只是不明白爲什麼APPPATH不起作用,就好像被調用時一樣,它給了我應用程序文件夾的PATH,無論使用什麼類。

回答

3

APPPATH實際上是系統文件,而不是前端資產。這是您的應用程序文件夾的路徑,這就是它應該使用的。 ../relative/paths在Codeigniter中很少有效,因爲它們與當前URL(而不是視圖文件)相對。這真是一團糟,你正在進入。

簡單的解決方案是使用base_url()代替,但如果你想更短的路徑,這是我用:

define('BASE_URI', str_replace('index.php', '', $_SERVER['SCRIPT_NAME'])); 

在大多數情況下,其結果將是/,但這將佔CI設施子目錄。對於你,它應該返回/project/

建議不要將CSS和圖像等靜態文件混合到應用程序文件中。大多數人創建一個名爲assetspublic的目錄來存儲它們。

<link rel="stylesheet" href="<?php echo BASE_URI.'public/css/style.css'; ?>" /> 
<link rel="stylesheet" href="<?php echo base_url().'assets/css/style.css'; ?>" /> 

如果您確實需要將資源存儲在您的應用程序文件夾中,那麼請刪除所有相對路徑。你並不需要它們,因爲APPPATH是絕對的:

<link rel="stylesheet" href="<?php echo APPPATH.'_data/css/style.css'; ?>" /> 

應該從工作無處不在。

+0

base_url()像一個魅力工作!感謝您的建議。也會研究其他選項。 – Ando

+0

另一種選擇:http://codeigniter.com/user_guide/helpers/html_helper.html#link_tag –