1

アプリ内のパスの整理に問題があります。

APPPATH 関数を使用して、データベースで画像の文字列パスを読み書きしています。問題は、APPPATH がコントローラーの後に関数を配置することです。

ここにcssを取得するための私の関数があります

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

そして、私がそれに行くと、正しいhttp://localhost/project/index.php/homecssリンクが機能します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

ビューの include サブフォルダーにヘッダー/コンテンツ/フッターがあり、コンテンツにデータを送信している単純なテンプレート構造を使用しています。かなり標準的なもの。APPPATH が呼び出されたときに、使用されているクラスに関係なく、APPLICATION フォルダーへの PATH が返されるかのように機能しない理由がわかりません。

4

1 に答える 1

4

APPPATHこれは実際にはシステムファイル用であり、フロントエンドアセット用ではありません。これはアプリケーションフォルダへのパスであり、そのために使用する必要があります。../relative/pathsCodeigniterは現在のURL(ビューファイルではない)から相対的であるため、うまく機能することはめったにありません。これは本当にあなたが入り込んでいる混乱です。

代わりに使用するのが簡単な解決策ですがbase_url()、より短いパスが必要な場合は、これを使用します。

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

ほとんどの場合、結果はになりますが/、これはサブディレクトリへのCIのインストールを考慮します。あなたにとって、それは戻るはず/project/です。

CSSや画像などの静的ファイルをアプリケーションファイルに混在させておくのはお勧めしません。ほとんどの人は、assetsまたはpublicそれらを保存するためのディレクトリを作成します。

<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'; ?>" />

それはどこからでも機能するはずです。

于 2012-09-13T17:09:24.980 に答える