/ / TYPO3: lettura di tt_address e stampa ordinata da sys_categories con fluido nella propria estensione extbase - typo3, relation, fluid, extbase

TYPO3: lettura di tt_address e stampa ordinata da sys_categories con fluido nella propria estensione extbase - typo3, relation, fluid, extbase

Voglio leggere i contenuti di tt_address e stamparli ordinati da sys_categories nella mia estensione extbase / fluid.

Ho mappato entrambe le tabelle in typoscript, creato modelli, controller e repository per entrambi e quindi sono in grado di stampare entrambe le tabelle complete senza problemi.

Tuttavia, ho bisogno di stampare solo gli indirizzi che corrispondono a una determinata categoria (dipende dalla pagina) ma non riesco a farlo funzionare.

Secondo alcune ricerche dovrebbe essere possibile caricarli e accedervi nel modello fluido come

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

Ma se li visualizzo tramite l'opzione di debug non ci sono indirizzi assegnati al cat array - non c'è da meravigliarsi se nessuno viene visualizzato.

Ho creato TCA per entrambe le tabelle con solo la definizione di colonna M: M relativa (categorie per tt_address e articoli per sys_categories) e ho incluso quanto segue nei modelli:

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

e naturalmente il contrario nel modello di indirizzo.

Dov'è la colpa, cosa mi manca? È anche possibile utilizzare le relazioni M: M su tabelle mappate? Ho bisogno di un TCA completo?

Per favore aiutatemi a provarlo disperatamente da una settimana, ogni risposta sarà molto apprezzata.

Grazie in anticipo!

PS: voglio ovviamente usare la tabella "sys_category_record_mm" -relationship.

risposte:

2 per risposta № 1

Hai aggiunto categorie alla tabella tt_address con makeCategorizable()?

Questo aggiungerà il TCA corretto per tett_address quindi non devi preoccuparti dei ritorni MM. È quindi possibile anche recuperare tutti i record necessari in base a determinati parametri. nel tuo caso, la categoria della tua pagina. E puoi anche creare raccolte di categorie per spingere alla tua vista.

tutto è spiegato qui: https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Categories/Index.html