/ / TYPO3: читання tt_address та друк за сортуванням за sys_categories з рідиною в розширенні extbase - typo3, relation, fluid, extbase

TYPO3: читання tt_адресу та друк його впорядковано за sys_categories з рідиною у власному розширенні extbase - typo3, relationship, fluid, extbase

Я хочу прочитати вміст tt_address і роздрукувати їх, відсортовані за sys_categories у моєму розширенні extbase / fluid.

Я зіставив обидві таблиці в typoscript, створив моделі, контролери та сховища для обох і тому я можу друкувати обидві таблиці без проблем.

Тим не менш, мені потрібно друкувати тільки адреси, які відповідають певній категорії (залежить від сторінки), але я не можу змусити її працювати.

Згідно з деякими дослідженнями, необхідно мати можливість завантажувати їх і отримувати доступ до них у шаблоні рідини

    <f:for each="{cats}" as="cat">
<f:for each="{cat.items}" as="adr">{adr}</f:for>
</f:for>

Але якщо я покажу їх через опцію налагодження, то немає адресів, прикріплених до масиву cat - не дивно, що ніхто не відображається.

Я створив TCAs для обох таблиць лише з визначенням стовпців M: M (категорії для tt_адреси та елементи для sys_categories), а в моделі включив наступне:

    /**
* Addresses
*
* @var TYPO3CMSExtbasePersistenceObjectStorage<VendorMyextDomainModelAddress>
*/
protected $addresses;

/**
* Adds a Address
*
* @param VendorMyextDomainModelAddress $address
* @return void
*/
public function addAddress(VendorMyextAddressDomainModelAddress $address) {
$this->addresses->attach($address);
}

/**
* Removes a Address
*
* @param VendorMyextDomainModelAddress $addressToRemove The Address to be removed
* @return void
*/
public function removeAddress(VendorMyextDomainModelAddress $addressToRemove) {
$this->addresses->detach($addressToRemove);
}

/**
* Returns the Addresses
*
* @return TYPO3CMSExtbasePersistenceObjectStorage<VendorMyextDomainModelAddress> $addresses
*/
public function getAddresses() {
return $this->addresses;
}

/**
* Sets the Addresses
*
* @param TYPO3CMSExtbasePersistenceObjectStorage<VendorMyextDomainModelAddress> $addresses
* @return void
*/
public function setAddresses(TYPO3CMSExtbasePersistenceObjectStorage $addresses) {
$this->addresses = $addresses;
}

і, звичайно, навпаки в адресній моделі.

Де провина, що я відсутній? Чи можна навіть використовувати відносини M: M на зіставлених таблицях? Чи потрібен мені повний TCA?

Будь ласка, допоможіть. Я намагаюся це відчайдушно починати з одного тижня.

Спасибі заздалегідь!

PS: Я хочу використовувати таблицю "sys_category_record_mm", звичайно ж.

Відповіді:

2 для відповіді № 1

Ви додали категорії до таблиці tt_address with makeCategorizable()?

Це додасть вам правильний TCAtt_address, так що ви не повинні турбуватися про raltaions ММ. Потім ви також можете просто отримати всі необхідні записи на основі певних параметрів. у вашому випадку, категорія вашої сторінки. Крім того, ви можете створити колекції категорій, щоб підштовхнути ваш погляд.

тут все пояснено: https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Categories/Index.html