Mengapa TYPO3 tidak memiliki Model Halaman di Inti?

Saat saya menggunakan PageRepository inti (TYPO3\CMS\Frontend\Page\PageRepository), fungsi getPage(), saya mendapatkan array yang dikembalikan dan bukan sebuah objek, seperti di banyak repositori inti lainnya. Kemudian saya harus membangun semacam "keajaiban" untuk diri saya sendiri untuk memasukkan Kategori atau Penulis Halaman sebagai Objek untuk digunakan dalam Template Fluid. Pertanyaannya adalah apakah ini semacam "keputusan desain" untuk tidak menyediakan Model Halaman sama sekali?


person Félix Martinez    schedule 16.01.2020    source sumber


Jawaban (3)


PageRepository tidak digunakan dalam konteks Extbase, jadi tidak ada pemodelan Domain di sini, karena ini juga banyak digunakan dalam konteks backend dan pada eksekusi inti tingkat sangat rendah, di mana Extbase tidak tersedia atau akan memakan banyak biaya untuk booting Basis Ekst. Anda cukup memetakan tabel halaman ke model Anda sendiri dan menggunakan pemodelan Domain yang tepat dengan cara ini, saat menggunakan Extbase di ekstensi Anda. Inti tidak menyediakan model Domain Extbase untuk halaman, afaik.

person Euli    schedule 16.01.2020
comment
Anda cukup memetakan tabel halaman ke model Anda sendiri..... Berapa banyak bidang yang saya perlukan di TYPO3 9-10? Saya kira itu hanya untuk membuat model domain, dan memetakan Hubungan MM .... entah bagaimana? - person Félix Martinez; 16.01.2020
comment
Anda cukup menggunakan TypoScript untuk memetakan tabel halaman. Bidang mana yang Anda perlukan terserah Anda. Relasi akan terpetakan dengan benar, karena sudah ada konfigurasi TCA untuk relasi halaman -› kategori. - person Euli; 16.01.2020

Tidak masuk akal untuk mengirimkan model domain Extbase Page karena berbagai alasan:

  1. TYPO3 sendiri tidak membutuhkannya.
  2. Modelnya harus sangat umum karena tidak dapat mengetahui apa pun tentang persyaratan domain Anda.
  3. Oleh karena itu, modelnya akan terlalu umum untuk semua persyaratan domain yang pada dasarnya mengharuskan Anda menambahkan model domain Page Anda sendiri.

Dan ya, hal yang sama dapat dikatakan tentang FrontendUser yang dikirim dan kelas terkait dan orang dapat berargumentasi bahwa kelas ini harus dibatalkan karena alasan yang sama.

person Mathias Brodala    schedule 16.01.2020
comment
1. Saya tidak terlalu mendalami inti dan mempercayai kata-kata Anda, alangkah baiknya jika ada penjelasannya. - person Félix Martinez; 16.01.2020
comment
2. Menurut saya, mengirimkan model generik yang memungkinkan $page-›getCategories() atau $page-›getAuthor-›getName() tidak menjadi masalah - person Félix Martinez; 16.01.2020

Anda tidak perlu membuat objek dari array untuk digunakan di Fluid.

Anda juga bisa meneruskan array ke tampilan. Anda akan menggunakan notasi . seperti halnya dengan objek.

Misalnya. di pengontrol:

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

Cairan:

{page.title}
person Jonas Eberle    schedule 16.01.2020
comment
Terima kasih, tapi saya mencari page.categories[0].pid atau page.author.name - person Félix Martinez; 16.01.2020
comment
Anda dapat mengambil nilai-nilai ini di pengontrol dan menetapkan hanya nilai-nilai yang Anda perlukan ke tampilan. - person Jonas Eberle; 16.01.2020