TYPO3 extbase域模型中的虚拟属性?

时间:2019-04-18 09:32:16

标签: typo3 extbase typo3-9.x

我正在尝试使用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中添加了一个数据库字段,但似乎没有什么不同。

2 个答案:

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