Php Lili form helper未在字段中显示值零(0)
在使用Limition框架开发PHP应用程序时,我注意到值0没有显示在表单的文本字段中。目前,我正在从MySQL数据库中获取数据,显示并更新它。我能够将值0保存到数据库,并且从数据库返回的信息是正确的,因为我能够在将值直接回显到页面时查看它,并且除0以外的任何值都能正确显示。是否有人知道如何在Limition窗体中启用零值渲染,或者可能在Limition窗体中渲染之前禁用值检查Php Lili form helper未在字段中显示值零(0),php,lithium,formhelper,Php,Lithium,Formhelper,在使用Limition框架开发PHP应用程序时,我注意到值0没有显示在表单的文本字段中。目前,我正在从MySQL数据库中获取数据,显示并更新它。我能够将值0保存到数据库,并且从数据库返回的信息是正确的,因为我能够在将值直接回显到页面时查看它,并且除0以外的任何值都能正确显示。是否有人知道如何在Limition窗体中启用零值渲染,或者可能在Limition窗体中渲染之前禁用值检查 我使用的是默认的Ha。我以前从未注意到这一点。看来应该修好了 同时,您可以在应用程序中编辑limition\templ
我使用的是默认的Ha。我以前从未注意到这一点。看来应该修好了 同时,您可以在应用程序中编辑
limition\template\helper\Form
或创建app\extensions\helper\Form
(如果您从默认的app
更改了app
,则用应用程序的名称空间替换app
)
需要更改的方法是\u defaults()
。以下是将显示零值的内容:
protected function _defaults($method, $name, $options) {
$methodConfig = isset($this->_config[$method]) ? $this->_config[$method] : array();
$options += $methodConfig + $this->_config['base'];
$options = $this->_generators($method, $name, $options);
$hasValue = (
(!isset($options['value']) || $options['value'] === null) &&
$name && $value = $this->binding($name)->data
);
$isZero = (isset($value) && ($value === 0 || $value === "0"));
if ($hasValue || $isZero) {
$options['value'] = $value;
}
if (isset($options['value']) && !$isZero) {
$isZero = ($options['value'] === 0 || $options['value'] === "0");
}
if (isset($options['default']) && empty($options['value']) && !$isZero) {
$options['value'] = $options['default'];
}
unset($options['default']);
$generator = $this->_config['attributes']['name'];
$name = $generator($method, $name, $options);
$tplKey = isset($options['template']) ? $options['template'] : $method;
$template = isset($this->_templateMap[$tplKey]) ? $this->_templateMap[$tplKey] : $tplKey;
return array($name, $options, $template);
}
当前版本的某些条件条件失败,要么是实际的零整数,要么是字符串
“0”
尝试将其转换为字符串:$value=(string)$valueFromDb
这也不太可能。从数据库返回的值以字符串的形式返回。我正在考虑提交一个请求。此更改通过将多个对象绑定到表单来中断某些单元测试。不太清楚为什么(我甚至不知道多个绑定是可能的)。一旦解决了这个问题,我会用最终的解决方案来更新这个答案。这个问题被合并到锂开发分支中。很快就能在master中找到。