เหตุใด TYPO3 จึงไม่มี Page Model ใน Core

เมื่อฉันใช้ PageRepository หลัก (TYPO3\CMS\Frontend\Page\PageRepository) ฟังก์ชัน getPage() ฉันจะได้รับ array ที่ส่งคืนและ ไม่ใช่ วัตถุ เช่นเดียวกับในที่เก็บหลักอื่นๆ มากมาย จากนั้น ฉันจะต้องสร้าง "เวทย์มนตร์" สำหรับตัวเองเพื่อ แทรก หมวดหมู่ หรือ ผู้เขียนเพจ เป็น Objects ที่จะใช้ใน เทมเพลตแบบไหล คำถามคือถ้าเป็น "การตัดสินใจออกแบบ" ที่จะไม่ให้ Page Model เลย?


person Félix Martinez    schedule 16.01.2020    source แหล่งที่มา


คำตอบ (3)


PageRepository ไม่ได้ใช้ในบริบท Extbase ดังนั้นจึงไม่มีการสร้างแบบจำลองโดเมนที่นี่ เนื่องจากมีการใช้งานจำนวนมากในบริบทแบ็กเอนด์และในการประมวลผลคอร์ระดับต่ำมาก โดยที่ Extbase ไม่พร้อมใช้งาน หรืออาจมีค่าใช้จ่ายมากเกินไปในการบูตเครื่อง เอ็กซ์เบส. คุณสามารถแมปตารางเพจกับโมเดลของคุณเอง และใช้การสร้างแบบจำลองโดเมนที่เหมาะสมด้วยวิธีนี้ เมื่อใช้ Extbase ในส่วนขยายของคุณ แกนกลางไม่ได้จัดเตรียมโมเดลโดเมน Extbase สำหรับเพจ afaik

person Euli    schedule 16.01.2020
comment
คุณสามารถแมปตารางเพจกับโมเดลของคุณเองได้..... ฉันจำเป็นต้องมีฟิลด์จำนวนเท่าใดใน TYPO3 9-10? ฉันเดาว่ามันเป็นเพียงการสร้างแบบจำลองโดเมนและแมปความสัมพันธ์ MM .... อย่างใด? - person Félix Martinez; 16.01.2020
comment
คุณสามารถใช้ TypoScript เพื่อแมปตารางหน้าได้ ฟิลด์ใดที่คุณต้องการเพื่อให้คุณตัดสินใจ ความสัมพันธ์จะถูกแมปอย่างถูกต้อง เนื่องจากมีการกำหนดค่า TCA สำหรับเพจ -› ความสัมพันธ์หมวดหมู่อยู่แล้ว - person Euli; 16.01.2020

การจัดส่งโมเดลโดเมน Extbase Page ด้วยเหตุผลหลายประการ:

  1. TYPO3 เองก็ไม่ต้องการมัน
  2. โมเดลจะต้องเป็นแบบทั่วไปอย่างยิ่ง เนื่องจากไม่สามารถรู้อะไรเกี่ยวกับข้อกำหนดโดเมนของคุณได้
  3. ด้วยเหตุนี้ โมเดลจึง กว้างเกินไป สำหรับข้อกำหนดโดเมนโดยทั่วไป ซึ่งจะทำให้คุณต้องเพิ่มโมเดลโดเมน Page ของคุณเองต่อไป

และใช่ อาจพูดแบบเดียวกันเกี่ยวกับการจัดส่ง FrontendUser และคลาสที่เกี่ยวข้อง และใครๆ ก็อาจแย้งว่าสิ่งเหล่านี้ควรถูกทิ้งด้วยเหตุผลเดียวกัน

person Mathias Brodala    schedule 16.01.2020
comment
1. ฉันไม่ได้เจาะลึกขนาดนั้นและรับฟังคำพูดของคุณ คงจะดีไม่น้อยที่จะอธิบายต่อไป - person Félix Martinez; 16.01.2020
comment
2. ฉันไม่คิดว่ามันจะเป็นปัญหาในการจัดส่งโมเดลทั่วไปที่อนุญาตให้ $page-›getCategories() หรือ $page-›getAuthor-›getName() - person Félix Martinez; 16.01.2020

คุณจะไม่ต้องสร้างออบเจ็กต์จากอาร์เรย์เพื่อใช้ใน Fluid

คุณยังสามารถส่งอาร์เรย์ไปยังมุมมองได้ คุณจะใช้เครื่องหมาย . เช่นเดียวกับวัตถุ

เช่น. ในตัวควบคุม:

$this->view->assign('page', $page);

ของไหล:

{page.title}
person Jonas Eberle    schedule 16.01.2020
comment
ขอบคุณ แต่ฉันกำลังมองหา page.categories[0].pid หรือ page.author.name - person Félix Martinez; 16.01.2020
comment
คุณสามารถดึงค่าเหล่านี้ในคอนโทรลเลอร์และกำหนดเฉพาะค่าที่คุณต้องการให้กับมุมมอง - person Jonas Eberle; 16.01.2020