CakePHP เป็นไปได้ไหมที่จะส่งข้อมูลไดนามิกไปยังองค์ประกอบเพื่อใช้ทั่วทั้งไซต์?

สำหรับโปรเจ็กต์นี้ที่ฉันกำลังดำเนินการอยู่ ส่วนหัวประกอบด้วยรายการเมนูที่มีรายการแบบเลื่อนลงแสดงรายการที่เกี่ยวข้องกับรายการเมนูที่เลือก รายการเหล่านี้มีจุดประสงค์เพื่อดึงออกจากฐานข้อมูลโดยตรง ดังนั้นจึงสามารถเพิ่ม/ลบรายการเหล่านี้ได้ทุกเมื่อที่จำเป็น

คำถามของฉันคือมันจะทำงานอย่างไรเมื่อฉันใช้ Element กับ CakePHP ฉันเข้าใจว่าองค์ประกอบนั้นเป็นโค้ดที่สามารถนำมาใช้ซ้ำได้เล็กน้อย แต่ฉันไม่แน่ใจว่าควรวางโค้ดลอจิกไว้ที่ใด องค์ประกอบใช้คอนโทรลเลอร์ของตัวเองหรือฉันต้องเพิ่มโค้ดให้กับคอนโทรลเลอร์ทุกตัวที่ใช้งานอยู่ในโปรเจ็กต์หรือไม่

ไชโย!


person mickburkejnr    schedule 23.02.2012    source แหล่งที่มา


คำตอบ (3)


ฉันมีองค์ประกอบสำหรับเมนูไดนามิกกับบริษัทที่เพจนั้นเป็นตัวแทน และฉันใช้มันในเลย์เอาต์เนื่องจากจำเป็นต้องแสดงในทุกหน้า

สิ่งที่ฉันทำคือ: ในตัวควบคุมแอปใน beforeFilter (คุณสามารถใช้ก่อนเรนเดอร์หรืออะไรก็ได้ที่เรียกใช้ก่อนที่จะเรนเดอร์มุมมอง) ฉันทำส่วนตรรกะ บางอย่างเช่นนี้

$this->loadModel('Company');
$companies = $this->Company->find('all');
$this->set('companies', $companies);

โดยคุณสามารถใช้มันในมุมมอง/เลย์เอาต์/องค์ประกอบของคุณได้

หวังว่านี่จะช่วยคุณได้ :)

person api55    schedule 23.02.2012

คุณจะใช้องค์ประกอบสำหรับส่วนของมุมมองที่คุณต้องการแสดงในแต่ละหน้า คุณไม่ต้องการแยก MVC และผสมผสานตรรกะทางธุรกิจในมุมมอง

ภายในองค์ประกอบของคุณให้เรียกใช้การดำเนินการของคอนโทรลเลอร์โดยใช้ requestAction() อ่าน http://book.cakephp.org/2.0/en/views.html#elements จะอธิบายวิธีใช้ requestAction()

ดูเหมือนคุณต้องการสร้างเมนูหรืออะไรสักอย่าง ดังนั้นให้เรียกคอนโทรลเลอร์ที่เกี่ยวข้องกับเมนูและรับข้อมูลจากโมเดล

person floriank    schedule 23.02.2012

โดยพื้นฐานแล้วองค์ประกอบนั้นเป็นมุมมองขนาดเล็กที่สามารถรวมไว้ในมุมมองอื่นได้ คุณสามารถสร้างตัวควบคุมสำหรับองค์ประกอบหรือคุณสามารถเพิ่มตรรกะของคุณให้กับตัวควบคุมที่มีองค์ประกอบนั้นได้ http://book.cakephp.org/1.3/view/1081/Elements

person AJFMEDIA    schedule 23.02.2012