首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TYPO3扩展库域模型中的虚拟属性?

在 TYPO3 中,域模型(Domain Model)是扩展开发的核心部分。虚拟属性(Virtual Properties)是指那些不直接映射到数据库字段的属性,而是通过某种逻辑计算或组合其他属性生成的值。

创建虚拟属性的步骤

  1. 定义域模型:在你的域模型类中定义一个虚拟属性的方法。
  2. 注释方法:使用 @TYPO3\CMS\Extbase\Annotation\ORM\Transient 注释来标记这个方法为虚拟属性。
  3. 实现逻辑:在方法中实现计算或组合逻辑。

示例

假设你有一个 Person 模型,包含 firstNamelastName 属性。你想要一个虚拟属性 fullName,它是 firstNamelastName 的组合。

1. 定义域模型

首先,定义你的域模型类 Person

代码语言:javascript
复制
namespace Vendor\Extension\Domain\Model;

use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;

class Person extends AbstractEntity
{
    /**
     * @var string
     */
    protected $firstName = '';

    /**
     * @var string
     */
    protected $lastName = '';

    /**
     * @return string
     */
    public function getFirstName()
    {
        return $this->firstName;
    }

    /**
     * @param string $firstName
     */
    public function setFirstName($firstName)
    {
        $this->firstName = $firstName;
    }

    /**
     * @return string
     */
    public function getLastName()
    {
        return $this->lastName;
    }

    /**
     * @param string $lastName
     */
    public function setLastName($lastName)
    {
        $this->lastName = $lastName;
    }

    /**
     * @return string
     * @TYPO3\CMS\Extbase\Annotation\ORM\Transient
     */
    public function getFullName()
    {
        return $this->firstName . ' ' . $this->lastName;
    }
}

2. 注释方法

getFullName 方法上使用 @TYPO3\CMS\Extbase\Annotation\ORM\Transient 注释,标记它为虚拟属性。这告诉 TYPO3 这个属性不需要映射到数据库字段。

3. 使用虚拟属性

在你的控制器或视图中,你可以像使用普通属性一样使用虚拟属性。

代码语言:javascript
复制
namespace Vendor\Extension\Controller;

use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
use Vendor\Extension\Domain\Model\Person;

class PersonController extends ActionController
{
    public function showAction(Person $person)
    {
        $this->view->assign('person', $person);
    }
}

在你的 Fluid 模板中,你可以直接访问虚拟属性:

代码语言:javascript
复制
<f:layout name="Default" />

<f:section name="content">
    <h1>Person Details</h1>
    <p>Full Name: {person.fullName}</p>
</f:section>
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领域建模之数据模型设计方法论

    开发人员在日常工作中,参与PRD评审、听产品经理讲述用户故事、提出各种需求。评审结束,一般会一股脑投入到设计开发,而数据库表设计就是其中不可或缺的一个过程。对于熟悉的业务模块,通过对需求分析,可以轻而易举的完成数据表设计,但对于非熟悉业务领域,可能会经过多轮PRD分析,整理一套数据表结构基础,然后对其追加字段,就完成了基础的数据模型设计。而在这个过程中,往往会感觉没有可以参考的理论,有时候甚至对设计的数据库表产生怀疑,不断考虑此设计是否符合业务、表结构设计后期是否具有通用性、表之间关系是否恰当可扩展等等。今天来谈些在实际业务开发中,针对数据建模的一些思考。

    01

    J. Med. Chem. | RELATION: 一种基于靶标结构的深度学习全新药物设计模型

    本文介绍一篇来自浙江大学侯廷军教授课题组、中南大学曹东升教授课题组、华东理工大学李洪林教授课题组联合发表的论文。该论文提出了一种能够在分子生成过程中考虑到蛋白-配体相互作用的深度学习生成模型RELATION,该模型适用于基于靶标结构的全新药物设计。RELATION模型同时使用百万量级的分子库以及蛋白-配体集合数据对变分自编码器进行训练,在引入双向迁移学习后,隐藏层的采样能够同时兼顾生成分子的骨架片段的新颖性以及对靶标蛋白的亲和性。RELATION模型还提供了药效团约束生成以及贝叶斯优化(BO)采样等模块,可供用户定制化生成药效团匹配度更高以及对靶标的对接打分表现更好的分子。

    05
    领券