TYPO3 получает пользователя из поля cruser_id

я хотел бы показать пользователю, который создал элемент. ТСА выглядит следующим образом:

        'ctrl' => [
    'title' => 'Title',
    'label' => 'title',
    'tstamp' => 'tstamp',
    'crdate' => 'crdate',
    'cruser_id' => 'cruser_id',

С геттером я могу получить tstamp и crdate. Но с cruser_id это не работает. Как я могу получить имя пользователя с cruser_id?

1 ответ

Следующий пример работает на TYPO3 11.5.8 и должен работать и с TYPO3 10.

Сначала вам нужны геттеры и сеттеры для вашей модели (\YourVendor\YourExtension\Domain\Model\YourModel)

      /**
 * @var int
 */
protected int $cruserId = 0;

/**
 * @return int
 */
public function getCruserId(): int
{
    return $this->cruserId;
}

/**
 * @param int $cruserId
 */
public function setCruserId(int $cruserId): void
{
    $this->cruserId = $cruserId;
}

Затем вам нужно добавить конфигурацию TCA для этого конкретного поля. Вам не нужно добавлять его в typesили где-нибудь еще. TYPO3 просто нужна конфигурация, чтобы он знал, что с ней делать.

      'cruser_id' => [
    'config' => [
       'type' => 'input',
       'size' => 10,
       'max' => 255,
   ],
],

И последнее, и не менее важное: вам нужно отобразить его в правом столбце. Итак, под вашим your_extension/Configuration/Extbase/Persistence/Classes.phpвам нужно добавить свою модель и свойство:

       \YourVendor\YourExtension\Domain\Model\YourModel::class => [
  'columns' => [
        'cruserId' => [
            'mapOnProperty' => 'cruser_id'
        ]
    ]
 ]

Вот ссылка: TYPO3 v10 Как мне получить crdate объекта или tstamp во FrontEnd


Объект внутреннего пользователя

Если вы хотите получить информацию о пользователе Backend, шаги те же, но необходимо внести некоторые изменения.

Модель

      use TYPO3\CMS\Beuser\Domain\Model\BackendUser

/**
 * @var BackendUser|null
 */
protected ?BackendUser $cruserId = null;

 /**
 * @return BackendUser|null
 */
public function getCruserId(): ?BackendUser
{
    return $this->cruserId;
}

/**
 * @param ?BackendUser $cruserId
 */
public function setCruserId(?BackendUser $cruserId): void
{
    $this->cruserId = $cruserId;
}

ТСА

      'cruser_id' => [
   'config' => [
     'type' => 'select',
     'renderType' => 'selectSingle',
     'foreign_table' => 'be_users',
     'foreign_table_where' => 'ORDER BY username',
   ],
],

Это даст вам следующее:

Надеюсь, это помогло

Другие вопросы по тегам