TYPO3 从 cruser_id 字段获取用户
TYPO3 get the user from cruser_id field
我想显示创建元素的用户。 TCA 看起来像这样:
'ctrl' => [
'title' => 'Title',
'label' => 'title',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
使用 getter 我可以获得 tstamp 和 crdate。但是对于 cruser_id 这不起作用。我怎样才能得到 cruser_id 用户的用户名?
以下示例适用于 TYPO3 11.5.8,也应该适用于 TYPO3 10。
首先你需要在你的模型上使用 getters 和 setters (\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'
]
]
]
这里有一个参考:
后端用户对象
如果要获取后台用户信息,步骤相同,但需要做一些改动。
型号
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;
}
TCA
'cruser_id' => [
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'be_users',
'foreign_table_where' => 'ORDER BY username',
],
],
这将为您提供以下内容:
希望对您有所帮助
我想显示创建元素的用户。 TCA 看起来像这样:
'ctrl' => [
'title' => 'Title',
'label' => 'title',
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'cruser_id' => 'cruser_id',
使用 getter 我可以获得 tstamp 和 crdate。但是对于 cruser_id 这不起作用。我怎样才能得到 cruser_id 用户的用户名?
以下示例适用于 TYPO3 11.5.8,也应该适用于 TYPO3 10。
首先你需要在你的模型上使用 getters 和 setters (\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'
]
]
]
这里有一个参考:
后端用户对象
如果要获取后台用户信息,步骤相同,但需要做一些改动。
型号
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;
}
TCA
'cruser_id' => [
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'foreign_table' => 'be_users',
'foreign_table_where' => 'ORDER BY username',
],
],
这将为您提供以下内容:
希望对您有所帮助