扩展 flexform 中的 FAL 图像字段
Posted
技术标签:
【中文标题】扩展 flexform 中的 FAL 图像字段【英文标题】:FAL image field in extension flexform 【发布时间】:2014-07-24 18:45:52 【问题描述】:是否可以像普通的 tt_content 元素一样创建一个 flexform FAL 图像字段? 我想在扩展 flexform 字段中实现以下屏幕中显示的功能。
我创建了一个 flexform 元素,但在翻译默认内容元素记录时出现问题。当我翻译默认内容元素时,图像不会复制到翻译的元素。
所以我需要实现 flexform FAL 图像字段,并且在翻译中没有错误。
【问题讨论】:
您提供的链接适用于 TCA。但我需要 flexform 中 FAL 的本地化功能。我根据此文档 wiki.typo3.org/File_Abstraction_Layer#FlexForm 创建了一个 FAL flexform 字段,但本地化不起作用。 【参考方案1】:效果很好,但是如果你不在插件中添加图片,你会以异常结束。所以我稍微调整了代码:
$resourceFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\ResourceFactory');
$sliderItems = array();
$sliderItemUids = $this->settings['sliderImages'];
if(!empty($sliderItemUids))
$sliderItemUids = explode(',', $sliderItemUids);
$arraySize = sizeof($sliderItemUids);
for($i = 0; $i < $arraySize; $i++)
$itemUid = $sliderItemUids[$i];
$fileReference = $resourceFactory->getFileReferenceObject($itemUid);
$fileArray = $fileReference->getProperties();
array_push($sliderItems, $fileArray);
// debug($this->settings['sliderImages']);
$this->view->assign('sliderItems', $sliderItems);
【讨论】:
【参考方案2】:希望这会有所帮助 - 我使用 flexforms 和 FAL 开发了一个图像滑块。代码如下:
Flexform 配置(仅适用于图像字段)
<settings.sliderImages>
<TCEforms>
<label>LLL:EXT:bwrk_slider/Resources/Private/Language/locallang_db.xlf:imageslider.flex.general.sliderImages</label>
<config>
<type>inline</type>
<maxitems>99</maxitems>
<foreign_table>sys_file_reference</foreign_table>
<!--<foreign_field>uid_foreign</foreign_field>-->
<foreign_table_field>tablenames</foreign_table_field>
<foreign_label>uid_local</foreign_label>
<foreign_sortby>sorting_foreign</foreign_sortby>
<foreign_selector>uid_local</foreign_selector>
<foreign_selector_fieldTcaOverride type="array">
<config>
<appearance>
<elementBrowserType>file</elementBrowserType>
<elementBrowserAllowed>jpg,png</elementBrowserAllowed>
</appearance>
</config>
</foreign_selector_fieldTcaOverride>
<foreign_match_fields type="array">
<fieldname>image</fieldname>
</foreign_match_fields>
<appearance type="array">
<newRecordLinkAddTitle>1</newRecordLinkAddTitle>
<headerThumbnail>
<field>uid_local</field>
<height>64</height>
<width>64</width>
</headerThumbnail>
</appearance>
</config>
</TCEforms>
</settings.sliderImages>
我的扩展程序的控制器
$resourceFactory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Resource\\ResourceFactory');
$sliderItems = array();
$sliderItemUids = $this->settings['sliderImages'];
$sliderItemUids = explode(',', $sliderItemUids);
if(!empty($sliderItemUids))
$arraySize = sizeof($sliderItemUids);
for($i = 0; $i < $arraySize; $i++)
$itemUid = $sliderItemUids[$i];
$fileReference = $resourceFactory->getFileReferenceObject($itemUid);
$fileArray = $fileReference->getProperties();
array_push($sliderItems, $fileArray);
// debug($this->settings['sliderImages']);
$this->view->assign('sliderItems', $sliderItems);
流体模板
<f:for each="sliderItems" as="item">
<div class="slider-item">
<div class="slider-item-img">
<f:image src="item.uid" treatIdAsReference="TRUE" />
</div>
<div class="slider-item-text"></div>
</div>
</f:for>
【讨论】:
这很好,但是当我使用这个解决方案时,当我点击 + 新按钮时出现错误“内部服务器错误”。 你为什么评论这个部分? 将关系保持在各个部分中是否可以负担得起?以上是关于扩展 flexform 中的 FAL 图像字段的主要内容,如果未能解决你的问题,请参考以下文章
TYPO3:如何使用flux:field.inline.fal 图像作为背景
TYPO3 FLUX FlexForms fedext.net
从插件配置中删除默认的 pi flexform 字段 - 错字3