การใส่โฟลเดอร์ CSS และโฟลเดอร์ไฟล์ภาพอยู่ที่ไหน ฉันคิดอยู่ในโฟลเดอร์มุมมอง? อย่างไรก็ตามตัวควบคุมจะทำการเปลี่ยนเส้นทางไปยัง url ฐานเสมอดังนั้นฉันต้องระบุเส้นทางในไฟล์. html ไปยังตำแหน่งที่มันอยู่ซึ่งซ้ำซ้อน
การใส่โฟลเดอร์ CSS และโฟลเดอร์ไฟล์ภาพอยู่ที่ไหน ฉันคิดอยู่ในโฟลเดอร์มุมมอง? อย่างไรก็ตามตัวควบคุมจะทำการเปลี่ยนเส้นทางไปยัง url ฐานเสมอดังนั้นฉันต้องระบุเส้นทางในไฟล์. html ไปยังตำแหน่งที่มันอยู่ซึ่งซ้ำซ้อน
คำตอบ:
ฉันมีการตั้งค่าเช่นนี้:
จากนั้นฉันมีฟังก์ชั่นตัวช่วยที่คืนค่าพา ธ แบบเต็มให้กับสิ่งนี้ขึ้นอยู่กับการตั้งค่าของฉันสิ่งที่คล้ายกับ:
แอพลิเคชัน / helpers / utility_helper.php:
function asset_url(){
return base_url().'assets/';
}
ฉันมักจะเก็บกิจวัตรประจำวันคล้าย ๆ กันนี้ไว้ในไฟล์เดียวกันและโหลดอัตโนมัติด้วยการกำหนดค่า autoload ของ codeigniter
หมายเหตุ: ผู้ช่วย URL อัตโนมัติเพื่อ
base_url()
การเข้าถึง
application / config / autoload.php:
$autoload['helper'] = array('url','utility');
จากนั้นคุณจะสามารถเข้าถึงasset_url()
รหัสของคุณได้ตลอด
$autoload['helper'] = array('url', 'utility');
ไม่ภายในโฟลเดอร์มุมมองไม่ดี
ดู: คุณต้องมี 3 โฟลเดอร์พื้นฐานในโครงการของคุณ:
ระบบ // นี่คือกรอบงาน CI มีเหตุผลไม่มากที่จะสัมผัสไฟล์นี้
แอปพลิเค // นี่คือที่ตรรกะของคุณไปไฟล์ที่ทำให้แอพลิเคชัน ,
สาธารณะ // นี่จะต้องเป็นเอกสารของคุณ
เพื่อเหตุผลด้านความปลอดภัยจะดีกว่าที่จะเก็บเฟรมเวิร์กและแอปพลิเคชันของคุณไว้ด้านนอกเอกสาร (public_html, htdocs, สาธารณะ, www ... ฯลฯ )
ภายในโฟลเดอร์สาธารณะของคุณคุณควรใส่ข้อมูลสาธารณะของคุณเบราว์เซอร์ที่สามารถมองเห็นได้สิ่งที่พบได้ทั่วไปคือรูปภาพ: js, css; ดังนั้นโครงสร้างของคุณจะเป็น:
|- system/
|- application/
|---- models/
|---- views/
|---- controllers/
|- public/
|---- images/
|---- js/
|---- css/
|---- index.php
|---- .htaccess
public
มีปัญหาในการเพิ่มโฟลเดอร์ที่มีชื่อเดียวกัน
.htaccess
ลบ/index.php?
และเรียกโฟลเดอร์สาธารณะด้วยbase_url().'public/yourfolder';
นี่คือวิธีที่ฉันจัดการสินทรัพย์สาธารณะ ที่นี่ฉันใช้วิธี Bootstrap ของPhalcon PHP
|-.htaccess*
|-application/
|-public/
|-.htaccess**
|-index.php***
|-css/
|-js/
|-img/
|-font/
|-upload/
|-system
.htaccess*
คำร้องขอทั้งหมดของโครงการจะถูกเขียนใหม่ไปยังพับลิก /ไดเร็กทอรีซึ่งทำให้เป็นรูทเอกสาร ขั้นตอนนี้ทำให้มั่นใจได้ว่าโฟลเดอร์โครงการภายในยังคงซ่อนอยู่จากการดูสาธารณะและช่วยกำจัดภัยคุกคามความปลอดภัยประเภทนี้ - Phalconphp Doc
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>
.htaccess**
กฎจะตรวจสอบว่ามีไฟล์ที่ร้องขออยู่หรือไม่และหากเป็นเช่นนั้นก็ไม่จำเป็นต้องเขียนใหม่โดยโมดูลเว็บเซิร์ฟเวอร์ - 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]"
หวังว่าจะช่วย :)
/public
ทำไมbase_url ()."public/[...
! base_url ()."/[YOUR ASSET FOLDER]"
มันควรจะเป็นเพียงแค่
ฉันมักจะใส่ไฟล์ทั้งหมดของฉันลงในโฟลเดอร์ " asset " ในรูทแอปพลิเคชันจากนั้นตรวจสอบให้แน่ใจว่าได้ใช้Asset_Helperเพื่อชี้ไปที่ไฟล์เหล่านั้นสำหรับฉัน นี่คือสิ่งที่ CodeIgniter แนะนำ
ไม่มีใครบอกว่าคุณต้องแก้ไข. htacces และเพิ่มไดเรกทอรีในสภาพที่เขียนซ้ำ ฉันได้สร้างไดเรกทอรี "สาธารณะ" ในไดเรกทอรีรากพร้อมกับ "system", "application", "index.php" และแก้ไขไฟล์. htaccess เช่นนี้:
RewriteCond $1 !^(index\.php|public|robots\.txt)
ตอนนี้คุณต้องโทรหา<?php echo base_url()."/public/yourdirectory/yuorfile";?>
คุณสามารถเพิ่มไดเรกทอรีย่อยใน "สาธารณะ" dir ตามที่คุณต้องการ
ไม่ว่าคุณจะวางไฟล์ CSS ไว้ที่ใดคุณสามารถใช้ผู้ช่วย CodeIgniter "html" ที่เรียกว่า link_tag () คุณจะใช้ตัวช่วยนี้สิ่งนี้:
echo link_tag('folder/subfolder/stylesheet.css');
มันขึ้นอยู่กับคุณที่จะหาไฟล์ CSS ในที่ที่เหมาะสมที่สุด (ตามความเห็นของคุณ) คุณจะต้องใช้ตัวช่วยอัตโนมัติ "html" หรือโหลดแยกต่างหากเพื่อใช้งาน
ผู้คนต่างก็แนะนำให้ใช้ base_url () เพื่อให้ได้สิ่งนี้ แต่จริงๆแล้วมันไม่ใช่วิธีที่ "CodeIgniter" ทำจริงๆ (ฉันคิดว่าคำถามนี้มีซ้ำกันสองสามข้อ) นั่นจะใช้งานได้ แต่หนึ่งในเหตุผลในการใช้เฟรมเวิร์กคือการใช้ฟังก์ชันที่สร้างไว้ล่วงหน้าภายใน
มีผู้ช่วยหลายคนใน codeigniter ทำสิ่งนี้
เพิ่มหนึ่งโฟลเดอร์ชื่อใด ๆ เช่นสาธารณะและเพิ่มไฟล์. 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 ไว้ในโฟลเดอร์ asset
ฉันใช้โครงสร้างโฟลเดอร์ต่อไปนี้:
application
system
static
admin
js
css
images
public
js
css
images
uploads
original
thumbs
(ฉันใหม่สำหรับ Codeigniter ดังนั้นฉันไม่รู้ว่านี่เป็นคำแนะนำที่ดีที่สุดหรือไม่)
ฉันเก็บไฟล์ที่มีสาธารณะในโฟลเดอร์สาธารณะของฉัน มันมีเหตุผลสำหรับพวกเขาที่จะอยู่ที่นั่นและฉันไม่ต้องการใช้ Codeigniter สำหรับสิ่งที่ฉันไม่จำเป็นต้องใช้
ต้นไม้ไดเรกทอรีมีลักษณะเช่นนี้:
ไฟล์เดียวที่ฉันเก็บไว้ใน / public / เป็น index.iter ของ Codeigniter และไฟล์. htaccess ของฉัน:
RewriteEngine On
RewriteBase /
RewriteRule ^css/ - [L]
RewriteRule ^img/ - [L]
RewriteRule ^js/ - [L]
RewriteRule ^index.php(.*)$ - [L]
RewriteRule ^(.*)$ /index.php?/$1 [L]
คุณสามารถวางโฟลเดอร์ css ไว้ในโฟลเดอร์ assest (คุณตั้งชื่อมันว่าชื่อใดก็ได้) ในไดเรกทอรีของโครงการของคุณเป็น:
- ci_app
- application
- views
- assets
- css
- style.css
... เมื่อคุณต้องการโหลดไฟล์ในหน้าคุณสามารถใช้ base_url () ฟังก์ชั่นด้วยวิธีนี้:
<head>
<link rel='stylesheet' href='<?php echo base_url();?>assets/css/style.css'>
</head>
และคุณแน่ใจว่าจะเพิ่ม base_url ของโครงการของคุณในไฟล์ config.php ดังนี้:
$config['base_url'] = 'http://localhost/ci_app';
สวัสดีโครงสร้างของเราก็เหมือนแอปพลิเคชันระบบ 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">
link_tag()
ผู้ช่วยที่เห็นได้ชัดว่าวิธีการที่จะทำเช่นนี้ ใส่ css ของคุณตามที่มันอยู่ใน site_root / css / จากนั้นใช้ผู้ช่วย:
echo link_tag('css/mystyles.css');
เอาท์พุต
<link href="http://example.com/css/mystyles.css" rel="stylesheet" type="text/css" />