web-dev-qa-db-ja.com

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

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

137
triq

私はこのようなセットアップがあります:

  • 応用
  • システム
  • 資産
    • 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()にアクセスできます。

186
Eddie

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

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

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

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

public //これはドキュメントルートでなければなりません

セキュリティ上の理由から、フレームワークとアプリケーションをドキュメントルートの外に保持する方が良いです(public_html、htdocs、public、www ...など)

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

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

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

フォルダー構造

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

編集するファイル

  1. .htaccess*

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

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

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

    <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]"として使用します

お役に立てれば :)

14
Ijas Ameenudeen

通常、そのようなすべてのファイルをアプリケーションルートの「assets」フォルダーに入れてから、 Asset_Helper を使用してそれらのファイルを指すようにします。これがCodeIgniterの提案です。

11
citizen conn

.htaccesを変更し、書き換え条件でディレクトリを追加する必要があると言う人はいません。ルートディレクトリに「システム」、「アプリケーション」、「index.php」とともに「パブリック」ディレクトリを作成しました。そして、次のように.htaccessファイルを編集しました:

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

ここで、<?php echo base_url()."/public/yourdirectory/yuorfile";?>を呼び出す必要があります。「public」ディレクトリ内に任意のサブディレクトリを追加できます。

7
Kreker

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

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

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

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

Codeigniterには、このようなことを行うヘルパーがたくさんいます。

4
Cheesus Toast

パブリックなどの任意の名前のフォルダーを1つ追加し、。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
Sandeep Mehra

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

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

そこで、画像、CSS、JSファイルをアセットフォルダー内に配置する必要があります。

3
coolest

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

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

プロジェクトのディレクトリにあるassestフォルダー(任意の名前を付けます)内にcssフォルダーを配置できます。
ci_app

応用
ビュー
資産

         css 
             style.css 

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

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

(私は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]
1
Anthony Scaife

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

すべてのフォルダーのすぐ近くにフォルダー名のアセットを作成し、このアセットフォルダー内にCSSとJavaScriptおよび画像フォルダーを作成し、すべての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"> 
0