【发布时间】:2015-04-10 15:18:34
【问题描述】:
在 Viewhelper 表单中,我有很多数字字段,默认情况下应该为空,而不是填充“0”或“0.00”。
我需要这个,因为 saveAction 中的数据应该有不同的处理方式,这取决于留下的空白字段或填充的值(包括 0)。
为此我将数据库表中的字段属性默认设置为NULL,如:
CREATE TABLE IF NOT EXISTS `tx_myext_domain_model_result` (
mw double (10,2) DEFAULT NULL,
mw2 double (10,2) DEFAULT NULL,
....
);
TCA 如下所示:
'mw' => array(
...
'config' => array(
'type' => 'input',
'size' => 30,
'eval' => 'double2,null'
)
),
另外,在Result模型类中,对应的属性初始化为NULL;
/**
* mw
*
* @var float
*/
protected $mw = null;
我进行了这项检查以确保将 NULL 处理给空表单字段的 getter:
public function setMw($mw) {
if ($mw == NULL)
$this->mw = 999;
else
$this->mw = $mw;
}
这做了我例外的事情:mw 字段 DB 设置为 '999' 用于一个空的表单字段。
但是现在,切换回正常的二传手,
public function setMw($mw) {
$this->mw = $mw;
}
只有当所有其他表单字段也都为空时,DB 表中的字段才为空。 IE。只要我在其中一个表单域中输入值,所有其他空表单域都会在保存时设置为“0”。
在 TCA eval 字段中添加 null 也没有奏效。
如何改变这种行为?我正在使用 TYPO3 6.2.x
【问题讨论】:
-
您的 TCA 配置是什么?也许您可以在控制器中使用
type converter(initializeAction)。 -
添加了 TCA。如何使用类型转换器?我不会改变类型;我只是 NULL 应该保持 NULL。操作不应该是问题,因为 NULL 到达 getter。
标签: typo3 extbase typo3-6.2.x