Расширение TYPO3: как сделать связь с моделью другого расширения необязательной? - PullRequest
0 голосов
/ 18 июня 2020

У меня есть расширение событий (для TYPO3 9 LTS и 10 LTS), например MyVendor\MyEvents, и расширение Locations, скажем MyVendor\MyLocations.

Модель MyVendor\MyEvents\Domain\Model\Events имеет свойство eventLocation, которое определяется как объект MyVendor\MyLocations\Domain\Model\Locations.

Теперь я хочу сделать отношение к MyVendor\MyLocations\Domain\Model\Locations необязательным . Я нашел способ, чтобы TCA отображал другое поле формы в бэкэнде в зависимости от устанавливаемого расширения MyLocations. Но я понятия не имею, как сделать все определения типов в модели событий условными. Они имеют решающее значение для работы расширения:

namespace MyVendor\MyEvents\Domain\Model

class Events extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
    /**
     * @var \MyVendor\MyLocations\Domain\Model\Locations
     */
    protected $eventLocation = NULL;

    /**
     * @return \MyVendor\MyLocations\Domain\Model\Locations $eventLocation
     */
    public function getEventLocation()
    {
        return $this->eventLocation;
    }

    /**
     * @param \MyVendor\MyLocations\Domain\Model\Locations $eventLocation
     * @return void
     */
    public function setEventLocation(\MyVendor\MyLocations\Domain\Model\Locations $eventLocation)
    {
        $this->eventLocation = $eventLocation;
    }

}

В случае загрузки MyVendor\MyLocations его необходимо определить, как указано выше, в случае, если оно не загружено, это должно быть просто целое число.

В TCA я использую if (TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('my_locations')) для отображения другого поля в бэкэнд-форме для события.

Модель местоположений находится в отдельном расширении, потому что я использую ее также в третьем расширении .

1 Ответ

0 голосов
/ 19 июня 2020

В расширении событий вы можете настроить репозиторий для локаций. Затем вы можете сопоставить этот репозиторий с вашей моделью расширений местоположения с помощью TypoScript.

...