Oft kann es passieren, dass die Verknüpfungen zwischen den Models große Listen mit sich ziehen. Dadurch kann der Aufruf in der Listenansicht sehr langsam werden. Mit LazyLoading kann dies optimiert werden.

1. LazyLoading für ObjectStorage im Model nutzen

Mit dieser kleinen Anpassung kann sehr gut die Ladegeschwindigkeit optimieren.

 

<?php

declare(strict_types=1);

namespace LdoerrDotCom\MyExt\Domain\Model;


use TYPO3\CMS\Extbase\Persistence\ObjectStorage;
use TYPO3\CMS\Extbase\Annotation\ORM\Lazy;

class MyModel extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
    #[Lazy()]
    /**
     * @var ObjectStorage<\LdoerrDotCom\MyExt\Domain\Model\Value>
     * @lazy
     */
    protected $value;
}

 

Der Vorteil ist, dass Model\Value Daten jetzt nur geladen werden, wenn sie benötigt werden.

2. TCA Listen standardmäßig zugeklappt anzeigen lassen

Eine weitere Anpassung ist die Änderung des Aufklappverhaltens von TCA Listen. Hier können wir z.B. für Value alle Value Listenelemente standardmäßig zuklappen. Dadurch werden die Daten erst beim Aufklappen geladen:

 

'valuelist' => [
            'exclude' => false,
            'label' => 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_property.tx_myext_values',
            'description' => 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_property.tx_myext_values.description',
            'config' => [
                'type' => 'inline',
                'foreign_table' => 'tx_myext_domain_model_value',
                'foreign_field' => 'property',
                'maxitems' => 9999,
                'appearance' => [
                    'collapseAll' => 1, //Hier wird alles standardmäßig eingeklappt
                    'levelLinksPosition' => 'top',
                ],
            ],

        ],

 

 

Previous PostJS Tutorial: Schnell und einfach VCARD Kontakte generieren
Next PostTYPO3 Tutorial: Mit Environment und Kontext arbeiten