我正在尝试使用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中添加了一个数据库字段,但似乎没有什么不同。
答案 0 :(得分:2)
该属性为null
,因为这是Extbase调试器检查它的状态。请注意,Extbase调试器对getter一无所知,也不会对其进行调用。
因此,如果要初始化属性,则必须在声明时执行此操作:
protected $participants = 'foo';
答案 1 :(得分:1)
您可以通过简单访问它来调试此属性。
在Fluid中,如果您使用<f:debug>{myModel}</f:debug>
,则将看到NULL
作为属性。
但是,如果您直接使用<f:debug>{myModel.participants}</f:debug>
,则会看到'foo'。