TYPO3 extbase 域模型中的虚拟属性?
Virtual properties in TYPO3 extbase domain models?
我正在尝试在 TYPO3 9 中使用虚拟域模型 属性。5.x 它没有数据库字段表示,但我无法让它工作。
我的模型是这样的
class Project extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
/**
* participants
*
* @var string
*/
protected $participants;
...
/**
* Returns the participants
*
* @return string $participants
*/
public function getParticipants()
{
$this->participants = "foo";
return $this->participants;
}
}
我在调试模型时确实看到了 属性,但它总是 null
,就好像它甚至不识别 getter 方法 getParticipants()
。
知道我做错了什么吗?
已经向 ext_tables.sql
和 TCA 添加了一个数据库字段,但似乎没有什么不同。
属性 是 null
因为这是 Extbase 调试器检查它时的状态。请注意,Extbase 调试器对 getter 一无所知,也不会调用它们。
因此,如果您想初始化 属性,则必须在声明时执行此操作:
protected $participants = 'foo';
您可以通过简单地访问它来调试 属性。
在 Fluid 中,如果您使用 <f:debug>{myModel}</f:debug>
,您将看到 NULL
代表您的 属性。
但是如果你直接使用<f:debug>{myModel.participants}</f:debug>
,你会看到'foo'。
我正在尝试在 TYPO3 9 中使用虚拟域模型 属性。5.x 它没有数据库字段表示,但我无法让它工作。
我的模型是这样的
class Project extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
/**
* participants
*
* @var string
*/
protected $participants;
...
/**
* Returns the participants
*
* @return string $participants
*/
public function getParticipants()
{
$this->participants = "foo";
return $this->participants;
}
}
我在调试模型时确实看到了 属性,但它总是 null
,就好像它甚至不识别 getter 方法 getParticipants()
。
知道我做错了什么吗?
已经向 ext_tables.sql
和 TCA 添加了一个数据库字段,但似乎没有什么不同。
属性 是 null
因为这是 Extbase 调试器检查它时的状态。请注意,Extbase 调试器对 getter 一无所知,也不会调用它们。
因此,如果您想初始化 属性,则必须在声明时执行此操作:
protected $participants = 'foo';
您可以通过简单地访问它来调试 属性。
在 Fluid 中,如果您使用 <f:debug>{myModel}</f:debug>
,您将看到 NULL
代表您的 属性。
但是如果你直接使用<f:debug>{myModel.participants}</f:debug>
,你会看到'foo'。