0

私はCodeIgniterの研究を始めており、深く掘り下げる前に、いくつかのシナリオを検討および分析しています。

これらの 1 つは、assets (css/js/img) フォルダーに関するものです。グーグルで調べると、主な傾向は、assets フォルダーを /system と /application の同じレベルのルートに配置することです。私が複数のアプリケーションを持つことができる場合を考えると (ここで述べたように: http://ellislab.com/codeigniter/user-guide/general/managing_apps.html )、それぞれに独自のアセットフォルダーがあり、最も論理的なソリューション私は /assets フォルダを /application フォルダに入れることです - これもより「ポータブル」なようです

さて、ここで質問です: ビューでアセット ファイルを参照するにはどうすればよいですか? /assets フォルダーがルートにある場合は、参照できることを読みます。次のような .css ファイル:<?=base_url()?>/assets/css/style.css しかし、/assets フォルダーが /application 内にある場合はどうなります<?=base_url()?>/application/assets/css/style.cssか?

前もって感謝します!

@Brendan: こんにちは、Brendan さん、コメントありがとうございます。複数のアプリケーション (/application1、/application2 など) を持つ問題から始まる「移植性」について、よりよく説明します。これが私の答えの出発点です。アプリケーションが 1 つしかない場合でも問題ありませんが、複数のシナリオを想定しています)

/assets フォルダーが index.php と同じレベルにあるということは、/assets/application1、/assets/application2 などのアプリケーションと同様に、多くのサブフォルダーを持つことになる可能性があることを意味します。

applicationX フォルダーを他のコンピューターに移動する必要がある場合は、対応する /assets/applicationX フォルダーも移動することを忘れないでください。/applicationX の名前を /newnameX に変更する場合は、混乱しないように、/assets/applicationX の名前も /assets/newnameX に変更することを忘れないでください。

/assets INTO /application を使用すると、これらすべての問題から解放されます。それが私の考えです。私が見つけたばかりのこの記事に記載されているように、ヘルパーのアイデアは素晴らしいです。これは、私が求めている質問を正確に解決するようです: /

4

3 に答える 3

1

これは古い質問であることは承知していますが、この問題を対象とした記事を以前に書きました。Ruby on Rails が Assets フォルダーをレイアウトする方法が気に入ったので、これを模倣するセットアップを作成しました。

ここで私のブログを参照してください: http://www.stefandunn.co.uk/blog/custom-codeigniter-helpers-stolen-from-ruby-on-rails/

それは私が作った最後のポイントです。

これにより、単純な php コードを使用してアセット ファイルを参照できます。

javascript_tag('main.js');
image_tag('logo.png', array('class'=>'logo', 'id'=> 'logo'));
stylesheet_tag('main.css');
于 2013-09-19T09:46:51.100 に答える
1

「ポータブル」を定義します。

CodeIgniter アプリケーションが正しく設定されている場合、つまり:

  • systemおよびapplicationWeb ルートの下のフォルダー
  • $config['base_url']正しい (プロトコルを含む完全なドメイン、つまりhttp://www.example.com)

assets次に、フロント コントローラーと同じディレクトリにフォルダーを配置する必要があります( index.php)。この構成は、フォルダーassets内にあることと同じくらい「ポータブル」です (私はそれ以上だと思います) 。applicationアプリケーション ディレクトリが Web ルートの下にある場合 (そうあるべきです)、ファイルをロードするための「プロキシ」スクリプトがないと、そのフォルダーからアセットをロードすることはできません。これは、せいぜいphpの負荷が増えることを意味し、最悪の場合(実装が不十分な場合)、セキュリティ上のリスクになります。

要するに:assets本当に に属していませんapplication。ただし、PHP/CI の優れた点は、必要に応じて実行できることです (ただしapplication、Web ルートより上にある必要があります)。

また、次のようにファイル パスをbase_url()関数に渡すこともできます。

<?php echo base_url('assets/css/style.css'); // output: http://www.example.com/assets/css/style.css ?>
于 2013-01-18T16:57:34.983 に答える