几天前我开始使用TYPO3 8.7.7,我创建了一个使用Fluid供电TYPO3扩展的小型网站。现在我要创建一个 自定义内容元素,显示编辑器可以在后端管理的一些产品。在我的扩展中,我创建了一个简单的模型 对于产品:
VERSIONNG_012637.1GI:255652911
我还创建了一个ProductRepository类,它只扩展了\ TYPO3 \ CMS \ Extbase \ Persistence \ Repository。
在EXT中:某事/ Configuration / TCA / tx_product.php
我有以下定义:
namespace Something\Products\Domain\Model;
use TYPO3\CMS\Extbase\DomainObject\AbstractEntity;
class Product extends AbstractEntity
{
protected $name;
protected $description;
public function __construct(string $name, string $description)
{ ... }
public function getName(): string
{ ... }
public function setName(string $name)
{ ... }
public function getDescription(): string
{ ... }
public function setDescription(string $description)
{ ... }
}
添加和编辑产品在Web->列表模块中运行良好。我将它们存储在名为Products的页面树中的文件夹中。
我的目标是在任意列中为页面创建名为Products的内容元素。前端的模板应该显示一个 产品清单。
我希望在我的EXT中有类似的东西:something / Resources / Private / Template / Content / Product.html
return [
'ctrl' => [
'title' => 'Products',
'label' => 'name'
],
'columns' => [
'name' => [
'label' => 'Name',
'config' => [
'type' => 'input',
'eval' => 'trim,required',
],
],
'description' => [
'label' => 'Description',
'config' => [
'type' => 'text',
'eval' => 'trim,required',
],
],
],
'types' => [
'0' => ['showitem' => 'name, description'],
],
];
现在我不知道如何做到这一点。我想我需要一个控制器类,但我无法弄清楚如何将它与我的Fluid TYPO3连接 模板/局部模板。任何人都可以帮我找到实现这个目标的方法吗?
提前致谢,祝你有愉快的一天。
修改
我现在的CE模板现在看起来像这样:
<div xmlns="http://www.w3.org/1999/xhtml" lang="en"
xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers"
xmlns:flux="http://typo3.org/ns/FluidTYPO3/Flux/ViewHelpers"
xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers">
<f:layout name="Content"/>
<f:section name="Configuration">
<flux:form id="newsitem" options="{group: 'Unicontrol'}">
<flux:field.input name="settings.headline" required="true"/>
</flux:form>
</f:section>
<f:section name="Main">
<ul>
<f:for each="{products}" as="product">
<li>{product.name}</li>
</f:for>
</ul>
</f:section>
</div>
我现在可以在CE中选择我的列表中的一个产品,但是在前端它只显示一个元素,即我在后端选择的元素。 如果我逃避斜线并不重要。
答案 0 :(得分:0)
通常你更喜欢有一个实际的插件 - 有几个原因,但最重要的是,它将你的内容与交互式插件分开,并为每个插件提供了一个专用的参数范围等。
也就是说,您可以将产品列表显示为启用Flux的元素。它需要三个组合:
flux:field.relation
或.select
或.multiRelation
,具体取决于您希望如何处理选择。将此指向您的域模型的SQL表(并参阅Flux ViewHelper文档以获取进一步参数以指定选择的完成方式)。transform
参数声明最终类型应为TYPO3\CMS\Extbase\Persistence\ObjectStorage<Your\Model\ClassName>
(请注意,您可能需要转义反斜杠,例如TYPO3\\CMS\\...
)。然后呈现产品列表,就像您在模板的Main
部分中所做的一样。内部磁通转换在字段中选择的任何值或关系,读取UID列表并使用您创建的存储库来选择每个。