2011-07-28 8 views
0

私はCodeigniter 2.0.2で私の最初のアプリケーションを開発しています。私はWeb上で何か情報を見つけることができないような小さな問題があります。CodeigniterのURLへのサーバファイルパスの変換

アプリケーションは、ユーザーに公開する必要があるサーバー上のローカルに格納されたリソース(イメージとオーディオファイル)を中心に展開されます。これらのリソースの場所は絶対パスとしてDBに格納されます。その結果、サーバーパスをbase_urlベースのURLにかなり頻繁に変換する必要があることがわかりました。

シンプルで頑丈な機能を私のためにはすでに書いていますが、CI(url、path)のすべての一見関係のあるヘルパーで、私はちょうど車輪を再発明したという感覚を揺さぶることはできません。

少なくとも、私はそうのようなBASE_URL相対パスに任意のサーバーパスを翻訳するCI機能のいくつかの種類(たとえば、「塩基性化」)が存在することになると思うだろう:

$server_path = '/server/path/to/app/resources/image.jpg'; 
basify($server_path); // returns 'resources/image.jpg' or './resources/image.jpg' 

場所CIアプリは/ server/path/to/appにあります。次にURLを作るためにbase_url()を呼び出すだけです。

そのようなものはありますか?

編集:はい、私は単純なpreg_replaceが私のために(少なくともリソースがベースパス内のリソースを扱う)ほとんどのケースを処理することを知っていますが、私はこれがCIの仕事でなければならないと思います。私がそれを使用している理由の半分は、パス管理について考えたくないからです。

+0

私はあなたのためにこれを行うCIには何もないと思うので、すでにやったようなヘルパーの1人を拡張することがおそらくあなたの最善の策です。ファイル情報をユーザーに表示する場合は、ファイルヘルパーを確認してください。 –

答えて

0

PHP関数str_replaceをcodeigniter FCPATHと一緒に使用できますか?
あなたのコードは次のようになります。

function basify($image_path) { 
    return str_replace(FCPATH, '', $image_path); 
} 

FCPATH定数は私に新しいですが、私はいくつかのテストを行っているし、それが正常に動作します。

+0

それはそれを実現する一つの方法ですが、FCPATHのサブディレクトリである絶対パスでのみ動作します。私はすべての相対パスがFCPATHに相対的であると仮定し、絶対パスがFCPATH(おそらく良いデザインである)の下になければならないと主張することができますが、それはCIがヘルパーを介して標準化することを期待する決定の種類です。 – Gregarious