0

我一起在 Extension Builder 中单击了我的一个小扩展。它是具有 IRRE 元素(墙上的窗户 - 1:n)的一般对象(墙)。此 IRRE 元素有一个具有不同值的选择框(窗口颜色)。我在 Override 文件夹中添加了值,因此当我在 Extension Builder 中添加另一个字段时,它们不会被覆盖。

在我的模板中,我遍历所有 n 个元素并尝试部分输出每个元素。但是现在在浏览器中只显示了 ID,而不是值。

这是我的 TCA 覆盖:

$GLOBALS['TCA']['MY_EXTENSIO']['columns']['color']['config']['items'] = [
['Green', 0],
['Red', 1],
['Blue', 2],
['Gray with orange dots', 3],
];

我在局部渲染它​​的方式

{window.color} // window  is the passed variable of the loop

在后端,一切正常。即使我保存数据,重新加载...总是选择颜色的名称(例如“蓝色”)。但在前端,输出只是“2”——颜色的 ID。我没有做任何其他事情:我改变了控制器,也没有使用多语言......

你们中有人对我有线索吗?我在谷歌搜索几个小时没有任何结果。

4

1 回答 1

1

TCA 覆盖:

$GLOBALS['TCA']['MY_EXTENSIO']['columns']['color']['config']['items'] = [
['Green', '#060'],
['Red', '#F00'],
['Blue', '#00F'], // for better practice I suggest classes like: ['Blue', 'blue-color-code']
['Gray with orange dots', '#999'],
];

更改 ext_tables.sql 中的字段类型 -> 不要忘记从安装工具更新数据库

CREATE TABLE tx_hous_domain_model_window (
   color varchar(255) DEFAULT '' NOT NULL
);

看看你的模型应该是这样的:

class Window extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity {
   protected $color = '';

   public function getColor() {
        return $this->color;
   }
   public function setColor($color) {
        $this->color = $color;
   }
}

在你看来:

{window.color} <!-- either you'll get '#00F' for blue or 'blue-color-code' class as per your TCA config -->

不要忘记清除安装工具缓存

于 2016-07-19T15:56:17.687 回答