首页 > 解决方案 > TYPO3 extbase 域模型中的虚拟属性?

问题描述

我正在尝试在 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()

知道我可能做错了什么吗?

已经在和 TCA 中添加了一个数据库字段ext_tables.sql,但似乎没有什么不同。

标签: typo3extbasetypo3-9.x

解决方案


该属性是null因为这是 Extbase 调试器检查它时的状态。请注意,Extbase 调试器对 getter 一无所知,也不会调用它们。

所以如果你想初始化你的属性,你必须在声明时这样做:

protected $participants = 'foo';

推荐阅读