Smarty + CodeIgniter - วิธีที่เหมาะสมในการใช้โมเดล

ก่อนอื่น: ฉันรู้ว่าการใช้โมเดลในมุมมองขัดต่อลำดับชั้น MVC - แต่นั่นเป็นวิธีแก้ปัญหาที่ราบรื่นที่สุดที่ฉันเคยพบมา

ฉันได้รวม Smarty เข้ากับแอปพลิเคชัน CodeIgniter CMS ของฉันแล้ว หนึ่งในคุณสมบัติคือการใช้เทมเพลตพร้อมกับการลดขนาดเนื้อหาคงที่เช่น CSS และ JavaScript ดังนั้นฉันจึงพยายามทำสิ่งนี้ในไฟล์เทมเพลต:

//Adding the static content
<?php
$this->content->css( array('my.css', 'style.css') );
?>

<html>
   <head>
      //Displaying the now minified static content
      <?php $this->content->display() ? >
   </head>
</html>

เนื่องจากเทมเพลตสุดท้ายควรสามารถแก้ไขได้โดยผู้ใช้ปลายทางหรือที่คล้ายกัน ฉันจึงเชื่อว่านี่เป็นวิธีแก้ปัญหาที่ง่ายที่สุด

ชื่นชมทุกอินพุต!


person Zar    schedule 21.04.2012    source แหล่งที่มา


คำตอบ (2)


ฉันคิดว่าคุณไม่ควรใช้ฟังก์ชันที่เกี่ยวข้องกับ codeigniter ใน Smarty-templates ไดเร็กทอรี CSS มีค่าคงที่ ดังนั้นจึงไม่จำเป็นต้องเรียกใช้ฟังก์ชัน php

หากคุณต้องการข้อมูลบางอย่างจาก CI คุณจะต้อง assign เป็นตัวแปรอัจฉริยะในฟังก์ชันคอนโทรลเลอร์ของคุณ - ดังนั้นจะไม่ทำให้ MVC เสียหาย:

$smarty->assign(array(
   "display" => $this->content->display(),
   "css_include" => $this->content->css(array("my.css","style.css"))
));

ตามที่ jco เขียนไว้ข้างต้นในกรณีง่ายๆ CI&Smarty อาจเป็น "overkill" แต่กรณีเดียวกันนี้มีประโยชน์มาก (เช่น การสืบทอดเทมเพลต และ บล็อก สามารถใช้เพื่อสร้างประเภทแบบฟอร์มเดียวกันได้)

person uzsolt    schedule 22.04.2012
comment
คุณสามารถสร้างเอฟเฟกต์ของการสืบทอดเทมเพลตขึ้นมาใหม่ใน CI ได้โดยไม่ต้องอาศัยความช่วยเหลือจาก Smarty - person Kemal Fadillah; 22.04.2012
comment
ฉันกำลังพยายามให้นักออกแบบแสดงสไตล์ของตนในเทมเพลตโดยตรง โดยไม่จำเป็นต้องแก้ไขคอนโทรลเลอร์ และอื่นๆ.. เดาว่าฉันจะต้องเลือก.. ขอบคุณสำหรับคำตอบของคุณ! - person Zar; 22.04.2012
comment
@KemalFadillah ฉันรู้ว่ามันสามารถสร้างได้ แต่ในความฉลาดมันก็พร้อมแล้ว และสำหรับฉันโค้ดที่ชาญฉลาดนั้นอ่านได้ง่ายกว่าโค้ด php ภายในโค้ด html (ฉันเกลียด <php echo desired_html_code() ?> มาก) - person uzsolt; 22.04.2012

ฉันใช้ทั้ง smarty และ codeigniter และจากประสบการณ์ของฉันการใช้ทั้งสองอย่างนั้นเกินความจำเป็น Smarty เพียงแค่ทำให้โค้ดของคุณยุ่งเหยิงและ IMHO ก็ใช้งานยุ่งยาก คิดว่ามุมมองของ Codeigniter นั้นเทียบเท่ากับเทมเพลตอันชาญฉลาดของคุณ

หากคุณกังวลเกี่ยวกับการย่อขนาด คุณสามารถลองใช้สิ่งนี้: ไลบรารีการย่อ CSS

หวังว่านี่จะเป็นประโยชน์

person jco    schedule 21.04.2012
comment
ใช่แล้ว จริงๆ แล้วฉันต้องการเงื่อนไขสำหรับคลาส parser CI เท่านั้นและมันจะสมบูรณ์แบบ .. ขอบคุณสำหรับคำตอบของคุณ! - person Zar; 22.04.2012