У меня есть расширение событий (для 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'))
для отображения другого поля в бэкэнд-форме для события.
Модель местоположений находится в отдельном расширении, потому что я использую ее также в третьем расширении .