Cssフォルダーと画像ファイルフォルダーを置くことはどこで許容されますか?ビューフォルダ内で考えていましたか?ただし、コントローラーは常にベースURLへのパスを再ルーティングするため、.htmlファイルでパスを指定する必要がありますが、これは冗長です。
私はこのようなセットアップがあります:
次に、セットアップに応じてこれへの完全なパスを返すヘルパー関数があります。これは次のようなものです。
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()
にアクセスできます。
いいえ、viewsフォルダー内は適切ではありません。
外観:プロジェクトに3つの基本フォルダーが必要です。
システム//これはCIフレームワークであり、このファイルに触れる理由はあまりありません
アプリケーション//これはあなたのロジック、アプリケーションを作成するファイル、
public //これはドキュメントルートでなければなりません
セキュリティ上の理由から、フレームワークとアプリケーションをドキュメントルートの外に保持する方が良いです(public_html、htdocs、public、www ...など)
パブリックフォルダー内に、パブリック情報、ブラウザーで表示できるもの、フォルダーを見つけるための一般的な情報(画像、js、css)を配置する必要があります。したがって、構造は次のようになります。
|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
これが私が公共資産を処理する方法です。ここでは、Phalcon PHPのBootstrapメソッドを使用します。
|-.htaccess*
|-application/
|-public/
|-.htaccess**
|-index.php***
|-css/
|-js/
|-img/
|-font/
|-upload/
|-system
.htaccess*
プロジェクトへのすべてのリクエストはpublic /ディレクトリに書き換えられ、ドキュメントルートになります。この手順により、内部プロジェクトフォルダーがパブリックビューから隠されたままになり、この種のセキュリティ上の脅威が排除されます。 -Phalconphp Doc
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
.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>
index.php***
application
パスとsystem
パスを次のように変更します。
$system_path = '../system';
$application_folder = '../application';
ここで、public
フォルダーをbase_url()."public/[YOUR ASSET FOLDER]"
として使用します
お役に立てれば :)
通常、そのようなすべてのファイルをアプリケーションルートの「assets」フォルダーに入れてから、 Asset_Helper を使用してそれらのファイルを指すようにします。これがCodeIgniterの提案です。
.htaccesを変更し、書き換え条件でディレクトリを追加する必要があると言う人はいません。ルートディレクトリに「システム」、「アプリケーション」、「index.php」とともに「パブリック」ディレクトリを作成しました。そして、次のように.htaccessファイルを編集しました:
RewriteCond $1 !^(index\.php|public|robots\.txt)
ここで、<?php echo base_url()."/public/yourdirectory/yuorfile";?>
を呼び出す必要があります。「public」ディレクトリ内に任意のサブディレクトリを追加できます。
CSSファイルを配置する場所に関係なく、link_tag()と呼ばれるCodeIgniter "html"ヘルパーを使用できます。このヘルパーを次のように適用します。
echo link_tag('folder/subfolder/stylesheet.css');
CSSファイルを最も適切な場所に配置するかどうかはあなた次第です(あなたの意見では)。 「html」ヘルパーを自動ロードするか、個別にロードして使用する必要があります。
人々はこれを達成するためにbase_url()の使用を提案し続けますが、実際にはそれを行うための「CodeIgniter」方法ではありません(この質問にはいくつかの重複があると思います)。それは機能しますが、フレームワークを使用する理由の1つは、その中であらかじめ作成された関数を使用することです。
Codeigniterには、このようなことを行うヘルパーがたくさんいます。
パブリックなどの任意の名前のフォルダーを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>
CodeIgniter 3.1.0の最新バージョンを使用しています。そのフォルダー構造は次のとおりです。
そこで、画像、CSS、JSファイルをアセットフォルダー内に配置する必要があります。
次のフォルダー構造を使用します。
application
system
static
admin
js
css
images
public
js
css
images
uploads
original
thumbs
プロジェクトのディレクトリにある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';
(私はCodeigniterが初めてなので、これが最善のアドバイスかどうかわかりません)
公開フォルダに公開されているファイルを保管します。彼らがそこにいることは論理的であり、Codeigniterを使用する必要がないものには使用したくない。
ディレクトリツリーは次のようになります。
/ 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]
こんにちは私たちの構造は、アプリケーション、システム、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">