CodeIgniterプロジェクトの資産はどこに行くべきですか?
-
05-07-2019 - |
質問
私はCodeIgniterから始めたばかりで、css、js、imagesなどがどこに行くべきかわかりません。システム全体のフォルダは問題ないように見えますが、それはすべてが独立していることを意味します。内部では、ファイルパスが長くなることを意味しており、混乱を招くかもしれないと心配しています。この問題のベストプラクティスは何ですか?
解決
通常、ルートレベルに個別のフォルダーを配置するため、次のようなディレクトリ構造になります。
/system
/css
/js
/img
機能しているようです-site_url(url)
を使用すると、生成されるURLはルートから取得されるため、site_url('css/file.css')
を使用してスタイルシートなどへのURLを生成できます。
他のヒント
個人的に、application
ディレクトリからsystem
ディレクトリをリッピングして、public_html (www)
の兄弟にします。次に、index.phpを移動してパブリックアセットを保存するプロジェクトディレクトリをprojekt
に作成します。
作業中のプロジェクトの名前はCISYSTEM
とします。 202
の親ディレクトリに210
というディレクトリを作成し、そのディレクトリ内で、使用しているバージョンindex.php
、$system_path = 'system';
などからディレクトリを作成します。
/CISYSTEM
/202
/210
/another_CI_version
/projekt_application
/models
/views
/controllers
/private_assets
/public_html
/projekt
index.php
.htaccess
css
img
js
lib
このディレクトリ構造の利点は、セキュリティのレイヤーが追加され、CIコアのアップグレード/スワップアウトが非常に簡単になることです。さらに、コアに変更を加えることは想定されていません-コアが格納される単一のディレクトリを持ち、すべてのプロジェクトがそれを参照することで物事が乾燥します。
このディレクトリのシャッフルはすべて、いくつかのことを変更する必要があります。幸いなことに、CodeIgniterはそれを簡単にします。すべての変更は$system_path = '../../CISYSTEM/210';
ファイルで行うことができます。
$application_folder = 'application';
を開いて、いくつかの経路を変更します:
変更:$application_folder = '../../projekt_application';
宛先:site_url()
変更:<base>
宛先:<base href="<?= site_url();?>">
また、他の回答で<head>
を使用することについて多くの人が話しているのを見ます。 HTMLの<a href='controllername/functionname'>Some Action</a>
要素を使用する場合、毎回呼び出す必要はありません。
<=>
アプリケーションの<=>に含めるだけで、次のようにコントローラを直接呼び出すことができます:
<=>
乾杯
ルートレベルに非常に多くのディレクトリがあるのは嫌いなので、/ publicを使用し、htaccessを使用して/ scriptsを/ public / scriptsなどに書き換えます。
ルートレベルでアセットを保持するのが最適だと思います。 <?=base_url()?>
を使用して、サイトの完全なルートをエコーできます。構成ファイルで、Webサイトのルートを設定します。このステートメントはそれをそのままエコーアウトします。
このため、次のようなインクルードを使用できます。
<link href="<?=base_url()?>/css/style.css" rel="stylesheet" type="text/css" />
コードのどこにいても、 http://example.com/css/styleを取得します.css 。
base_url()/ css / name.css
この方法でsite_url(url)ヘルパーを使用するには、最初にApache mod_rewrite(または同等のもの)を設定して、URIからindex.phpセグメントを削除する必要があります。
それ以外の場合、site_urlメソッドはindex.phpをURLに追加します。これにより、上記のようなベースディレクトリにパスがある場合、アセットへのパスが台無しになります。
URIからindex.phpを削除することに関するCodeIgniterのドキュメントは次のとおりです。