【问题标题】:TYPO3 Extension-Builder output select-value of IRRE in FluidFluid 中 IRRE 的 TYPO3 Extension-Builder 输出选择值
【发布时间】:2016-07-17 10:23:33
【问题描述】:

我在 Extension Builder 中一起点击了我的一个小扩展。 它是具有 IRRE 元素(墙上的窗户 - 1:n)的一般对象(墙)。此 IRRE 元素有一个具有不同值的选择框(窗口颜色)。我在 Override-folder 中添加了值,因此当我在 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。 我没有做任何其他事情:我改变了控制器,也没有使用多语言......

你们有谁知道我的线索吗?我在谷歌上搜索了几个小时没有任何结果。

【问题讨论】:

  • 您的 TCA 配置将在 BE 中显示选择框,因此您从 BE 中保存它将保存选择框的值,因为您为 Blue 提供了 2。您可以提供类似 ['Blue'=>'#00F'] 的值,并且需要检查您的 DB 'color' 字段类型是 varchar 还是 numeric。在这种情况下,您需要您的数据库字段类型 varchar。
  • TCA 字段配置在覆盖之前是什么样子的?可以发在这里吗?
  • @Ghanshyam Gohel,我按照您的建议更改了代码,但现在无法在后端保存条目。每次都会报错:“ 1:表“tx_hous_domain_model_window”中记录3的这些字段没有正确保存:颜色!由于数据库的类型转换,值可能已更改。有没有办法改变数据库?

标签: typo3 fluid extbase typo3-extensions extension-builder3


【解决方案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 -->

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

【讨论】:

  • 这是最好的方法吗?
  • @SebastianSchmal 因为有很多方法可以实现您的需求,但始终取决于需求。通常我更喜欢或建议使用我在上面的例子中给出的类。 screencast.com/t/8OXXVRBGu
  • @SebastianSchmal 正如已经指出的那样,有不同的方法。我建议也对 Color 使用域模型。然后,您可以决定它是 ValueObject 还是 DomainEntity - 如果行为仅绑定到属性(RGB 值、CYMK 值、..),它基本上是一个 ValueObject
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-28
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 2013-05-16
  • 2015-04-06
  • 1970-01-01
相关资源
最近更新 更多