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'。