首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TYPO3 -扩展开发-模型之间的关系

TYPO3 -扩展开发-模型之间的关系
EN

Stack Overflow用户
提问于 2017-11-24 14:43:11
回答 3查看 912关注 0票数 1

FYI,我是一个TYPO3新手:)我在我的TYPO3个人网站上做了自己的扩展,以管理画廊。现在,我正在跟踪以下文档:用Extbase和Fluid开发TYPO3扩展

目前,我只在域/模型中构建了两个类:

  • Galery.php
  • Picture.php.

变量是设置的,getter/setter也是。

我很清楚,我需要把两者联系在一起("1:n“?)但是我不使用Extension,我想自己理解如何做到这一点。我想我必须编辑Gallery.php模型来解释我想要实现的关系,但不知道如何实现。

有什么帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-24 15:50:47

学习如何做到这一点的一个很好的方法是使用extension创建一个扩展,然后读取生成的代码。

如果要自己添加关系,则需要编辑ext_tables.sql并将列添加到您的TCA和模型中。读一下你提到的那本书的第六章,你就会知道该怎么做。

票数 1
EN

Stack Overflow用户

发布于 2017-11-27 10:22:44

你已经得到了一些很好的答案。

附加点(用于为幻灯片扩展编程):

  • 您可能希望在图片中使用FileReference类型的属性。您也可以在extension_builder中选择它。然后,您的模型可能包含如下内容:

PictureModel.php:

代码语言:javascript
复制
/**
 * @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
 * @cascade remove
 */    
 protected $image = null;
  • 如果在图片库/图片库中使用1:n,则意味着您的图像一次只能在一个图库中。不必要的限制。我建议使用m:n (但这实际上是一个通用的数据库建模问题)。
  • 对于m:n,您需要一个额外的表来表示关系(按照惯例,类似于tx_slideshow_gallery_picture_mm)。让extension_builder为您创建它肯定更容易。您至少需要手动更改数据库模型(ext_tables.sql)、模型和TCA。特别是TCA从零开始编写可能有点棘手。

实例TCA:

代码语言:javascript
复制
'picture' => [
                'exclude' => true,
                'label' => 'LLL:EXT:uniolslideshow/Resources/Private/Language/locallang_db.xlf:tx_uniolslideshow_domain_model_gallery.picture',
                'config' => [
                            'type' => 'select',
                            'renderType' => 'selectMultipleSideBySide',
                            'foreign_table' => 'tx_uniolslideshow_domain_model_picture',
                            'MM' => 'tx_uniolslideshow_gallery_picture_mm',
                            'size' => 10,
                            'autoSizeMax' => 30,
                            'maxitems' => 9999,
                            'multiple' => 0,
                            'wizards' => [
                                // the fun starts here ...
  • 稍后,您可能会决定甚至不需要额外的Picture类,只需使用FileReferences的列表.但是为了教育的目的,我建议你遵循你最初的方法。
  • 试图理解事物是如何工作的,而不是使用“构建器”为您创建东西,这是令人钦佩的,但是考虑到在TYPO3中,创建模型(TCA、Model、Repository、ext_tables.sql)需要大量的文件。因此,手动执行所有操作都可能是乏味和容易出错的。在我看来,结合阅读文档、使用extension_builder和自己修改代码,以及查看现有的扩展,将有助于实现教育目的。稍后,结合使用extension_builder创建一个框架,然后自己修改它,对我来说效果最好。
票数 1
EN

Stack Overflow用户

发布于 2017-11-24 20:03:04

也许博客的例子可以帮助建立关系:一个通过博客例子的旅程。https://docs.typo3.org/typo3cms/ExtbaseFluidBook/3-BlogExample/Index.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47475528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档