/ / TYPO3: Čítanie tt_address a vytlačenie zoradené podľa sys_categories s kvapalinou vo vlastnom extbázovom rozšírení - typo3, vzťah, tekutina, extáza

TYPO3: Čítanie tt_address a vytlačenie zoradené podľa sys_categories s kvapalinou vo vlastnom extbázovom rozšírení - typo3, vzťah, tekutina, extáza

Chcem si prečítať obsah tt_address a vytlačiť ich zoradené podľa sys_categories v mojej extbáze / kvapaline.

Mapoval som obe tabuľky v typoskriptovaných, vytvorených modeloch, kontroloch a repozitároch pre obe, a tak som schopný vytlačiť obe tabuľky úplne bez problémov.

Potrebujem však vytlačiť iba adresy, ktoré zodpovedajú určitej kategórii (závisí od stránky), ale nemôžem to dostať do práce.

Podľa niektorých výskumov by malo byť možné načítať ich a pristupovať k nim v šablóne kvapaliny

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

Ak ich však zobrazím pomocou ladiacej voľby, nie sú k matici umiestnené žiadne adresy - nie je divu, že sa nezobrazujú žiadne.

Vytvoril som TCA pre obidve tabuľky s iba definíciou stĺpcov M: M (kategórie pre tt_address a položky pre sys_categories) a do modelov som zaradil nasledovné:

    /**
* 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;
}

a samozrejme naopak v adresnom modeli.

Kde je chyba, čo mi chýba? Je dokonca možné použiť vzťahy M: M na mapovaných tabuliach? Potrebujem kompletný TCA?

Prosím, pomôžte to skúsiť to zúfalo od jedného týždňa. Každá odpoveď bude veľmi ocenená.

Vopred ďakujem!

PS: Chcem samozrejme použiť tabuľku "sys_category_record_mm".

odpovede:

2 pre odpoveď č. 1

Pridal (-a) ste do tabuľky tt_address kategórie pomocou makeCategorizable()?

Tým sa pridá správna TCA pre vástt_address, takže sa nemusíte obávať MM raltaions. Môžete tiež jednoducho načítať všetky potrebné záznamy na základe určitých parametrov. vo vašom prípade kategóriu vašej stránky. Môžete tiež vytvoriť kolekcie kategórií, ktoré tlačia na váš pohľad.

všetko je vysvetlené tu: https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Categories/Index.html