我一起点击了扩展构建器中的一个小扩展。 它是具有IRRE元素的一般对象(墙)(墙上的窗口 - 1:n)。此IRRE元素具有不同值的选择框(窗口颜色)。我在Override文件夹中添加了值,因此当我在Extension Builder中添加另一个字段时,它们不会被覆盖。
在我的模板中,我循环遍历所有n个元素,并尝试以局部方式输出每个元素。但现在在浏览器中只显示ID而不是值。
这是我的TCA-Override:
$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。 我没有别的:我改变了控制器,也没有工作过多...
你们有没有人知道我?我几个小时都在谷歌搜索没有任何结果。
答案 0 :(得分: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 -->
不要忘记清除安装工具缓存