Codeigniterのどこに画像ファイル、CSS、JSなどを配置しますか?


144

cssフォルダーと画像ファイルフォルダーをどこに配置してもよいですか?私はビューフォルダ内を考えていましたか?ただし、コントローラーは常にベースURLへのパスを再ルーティングするため、.htmlファイル内のパスを指定する必要があります。これは冗長です。

回答:


202

私はこのような設定をしています:

  • 応用
  • システム
  • 資産
    • js
    • imgs
    • CSS

次に、セットアップに応じて、これへの完全なパスを返すヘルパー関数を用意します。これは次のようなものです。

application / helpers / utility_helper.php:

function asset_url(){
   return base_url().'assets/';
}

私は通常、これと同じような一般的なルーチンを同じファイルに保持し、codeigniterのオートロード構成でそれをオートロードします。

注:base_url()アクセス用にURLヘルパーをオートロードします。

application / config / autoload.php:

$autoload['helper'] = array('url','utility');

その後asset_url()、コード全体にアクセスできます。


1
こんにちは、エディ、関数コードはどこに置きますか?file_helper.phpに入れますか?
kebyang

3
こんにちは@KebyangBlabla私はあなたに役立つはずのもう少し多くの情報で私の答えを更新しました。
Eddie

10
「)(BASEURL」へのアクセスを取得するにはあなたもこのように、「URL」ヘルパーを含める必要があります:$autoload['helper'] = array('url', 'utility');
ジェフリー・

1つは、Webルート(私のものはpublic_html)フォルダーにアセットフォルダーを配置し、次にWebルートの上のディレクトリにCIを配置することをお勧めします。
Nate Nolting、2014

3
他の人が私のような場合、明確にするために、次のようにアクセスします<?= asset_url();?> css / css.css
JonYork

50

いいえ、viewsフォルダー内は適切ではありません。

見て:プロジェクトには3つの基本フォルダーが必要です。

システム //これはCIフレームワークですこのファイルに触れる理由はそれほど多くありません

アプリケーション //これはあなたのロジックが行くところです、アプリケーションを作るファイル

public // これはドキュメントルートである必要があります

セキュリティ上の理由から、フレームワークとアプリケーションをdocumentroot(public_html、htdocs、public、www ...など)の外部に置いた方がよい

パブリックフォルダー内には、ブラウザーが表示できるパブリック情報を配置する必要があります。フォルダー、画像、js、cssを見つけるのが一般的です。だからあなたの構造は次のようになります:

|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess

1
パブリックフォルダーのindex.phpとは何ですか?その404ファイルですか?感謝
DeLe 2013

遅れて申し訳ありませんが、lo:T index.phpファイルは、リクエストをキャッチし、フレームワークの残りの部分を呼び出すファイルになります。
Juan Jo

@Juan Jo ..CodeIgniter-3.0.6を使用していますpublic。. という名前のフォルダが見つかりません。同じ名前のフォルダを追加するのに問題はありますか。
Akhil Vijay

@AkhilVijayあなたはそれをあなたのcodeigniterフォルダーで見つけることができません、フォルダーはあなたがそれを任意のサーバーに配備するときでしょう
Anwar Hossain

codeigniterを使用する最善の方法は、.htaccessforを削除/index.php?してパブリックフォルダーを呼び出すことですbase_url().'public/yourfolder';
Robert Blasco Villarroya

16

これが私が公共資産を扱う方法です。ここでは、Phalcon PHPのBootstrapメソッドを使用しています。

フォルダ構造

|-.htaccess*
|-application/
|-public/
  |-.htaccess**
  |-index.php***
  |-css/
  |-js/
  |-img/
  |-font/
  |-upload/
|-system

編集するファイル

  1. .htaccess*

    プロジェクトへのすべてのリクエストはpublic /ディレクトリに書き換えられ、ドキュメントルートになります。この手順により、内部プロジェクトフォルダーがパブリックビューから非表示のままになるため、この種のセキュリティの脅威を排除できます。- Phalconphpドク

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteRule  ^$ public/    [L]
        RewriteRule  (.*) public/$1 [L]
    </IfModule>
  2. .htaccess**

    ルールは、要求されたファイルが存在するかどうかをチェックし、存在する場合は、Webサーバーモジュールで書き換える必要はありません。- Phalconphpドク

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php/$1 [QSA,L]
    </IfModule>
  3. index.php***

    applicationパスとsystemパスを次のように変更します。

    $system_path = '../system';
    $application_folder = '../application';

今、あなたはpublicフォルダを次のように使用し ますbase_url()."public/[YOUR ASSET FOLDER]"

お役に立てれば :)


上記のコードをテストしましたか、最後の行にエラーがあると思います。すべてのリクエストをリダイレクトする/publicので、なぜbase_url ()."public/[...ですか!それだけである必要がありbase_url ()."/[YOUR ASSET FOLDER]"ます。
Kerkouch

12

通常、そのようなすべてのファイルをアプリケーションルートの "assets"フォルダーに配置し、Asset_Helperを使用してそれらのファイルをポイントするようにします。これはCodeIgniterが提案するものです。


7

.htaccesを変更して、ディレクトリを書き換え条件に追加する必要があると誰も言っていません。ルートディレクトリに「system」、「application」、「index.php」とともに「public」ディレクトリを作成しました。.htaccessファイルを次のように編集しました。

RewriteCond $1 !^(index\.php|public|robots\.txt)

今、あなたは単に呼び出す必要がありますあなたは<?php echo base_url()."/public/yourdirectory/yuorfile";?> 好きなように「パブリック」ディレクトリ内にサブディレクトリを追加できます


私は何十億年も遅れていますが、誰かがこれを読んでいる場合、この答えは私の最初の解決策でしたが、仮想ホストを介してアクセスを管理している場合は、仮想ホストをパブリックフォルダにポイントして保持することをお勧めします.htaccess設定。とにかく、この回答が私に解決策を示しているので賛成票を投じます
Vertig0

5

CSSファイルの配置場所に関係なく、link_tag()と呼ばれるCodeIgniter "html"ヘルパーを使用できます。このヘルパーを次のように適用します。

echo link_tag('folder/subfolder/stylesheet.css');

CSSファイルを(あなたの意見では)最も適切な場所に置くのはあなた次第です。「html」ヘルパーをオートロードするか、使用するには個別にロードする必要があります。

これを実現するためにbase_url()の使用を提案し続けていますが、実際には、これを行う「CodeIgniter」の方法ではありません(この質問にはいくつか重複があります)。これは機能しますが、フレームワークを使用する理由の1つは、フレームワーク内の既成の関数を使用することです。

codeigniterには、この種のことを行う多くのヘルパーがいます。


4

1つのフォルダーを任意の名前、たとえばpublicに追加し、.htaccessファイルを追加して、すべてのファイルから書き込み許可を取得します。このフォルダーでは、すべてのファイルとすべてのフォルダーでエラーアクセスが禁止されませんこのように使います

<link href="<?php echo base_url(); ?>application/public/css/style.css" rel="stylesheet" type="text/css"  />
<script type="text/javascript" src="<?php echo base_url(); ?>application/public/js/javascript.js"></script>

4

CodeIgniter 3.1.0の最新バージョンを使用しています。そのフォルダ構造は次のとおりです。

  • システム
  • 応用
  • ユーザーガイド
  • 資産
    • 画像
    • js
    • CSS

ここで、イメージ、css、jsファイルをアセットフォルダに配置します。


3

次のフォルダー構造を使用します。

application 
system 
static
    admin
        js
        css
        images
    public
        js
        css
        images
    uploads
        original
        thumbs

2

(私はCodeigniterを初めて使用するので、これが最善のアドバイスかどうかはわかりません)

私はパブリックフォルダーに公開ファイルを保管しています。彼らがそこにいることは論理的であり、私がそれを使用する必要のないものにCodeigniterを使用したくありません。

ディレクトリツリーは次のようになります。

  • /応用/
  • /公衆/
  • / public / css /
  • / public / img /
  • / public / js /
  • /システム/

私が/ public /に保持しているファイルは、Codeigniterのindex.phpと.htaccessファイルだけです。

RewriteEngine On
RewriteBase /

RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]

RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]

2

次のように、プロジェクトのディレクトリにあるassestフォルダ(任意の名前)内にcssフォルダを置くことができます。

- ci_app
- application 
- views      
- assets 
  - css 
    - style.css 

...そのファイルをページにロードする場合は、base_url()関数を次のように使用できます。config.php <head> <link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'> </head> ファイルにプロジェクトのbase_urlを次のように追加してください。

$config['base_url'] = 'http://localhost/ci_app';

0

こんにちは私たちの構造はアプリケーション、システム、user_guideのようなものです

すべてのフォルダーのすぐ近くにフォルダー名のアセットを作成し、このアセットフォルダー内にcssとjavascriptおよびimagesフォルダーを作成し、すべてのcss jsをフォルダーに入れます

header.phpに移動して、次のようにcssを呼び出します。

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

-2

link_tag()ヘルパーは明らかにこれを行う方法です。あなたのCSSをそれが通常属している場所、site_root / css /に置き、ヘルパーを使用します:

CodeIgniterのドキュメントから...

echo link_tag('css/mystyles.css');

出力

<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.