Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Lili form helper未在字段中显示值零(0)_Php_Lithium_Formhelper - Fatal编程技术网

Php Lili form helper未在字段中显示值零(0)

Php Lili form helper未在字段中显示值零(0),php,lithium,formhelper,Php,Lithium,Formhelper,在使用Limition框架开发PHP应用程序时,我注意到值0没有显示在表单的文本字段中。目前,我正在从MySQL数据库中获取数据,显示并更新它。我能够将值0保存到数据库,并且从数据库返回的信息是正确的,因为我能够在将值直接回显到页面时查看它,并且除0以外的任何值都能正确显示。是否有人知道如何在Limition窗体中启用零值渲染,或者可能在Limition窗体中渲染之前禁用值检查 我使用的是默认的Ha。我以前从未注意到这一点。看来应该修好了 同时,您可以在应用程序中编辑limition\templ

在使用Limition框架开发PHP应用程序时,我注意到值0没有显示在表单的文本字段中。目前,我正在从MySQL数据库中获取数据,显示并更新它。我能够将值0保存到数据库,并且从数据库返回的信息是正确的,因为我能够在将值直接回显到页面时查看它,并且除0以外的任何值都能正确显示。是否有人知道如何在Limition窗体中启用零值渲染,或者可能在Limition窗体中渲染之前禁用值检查


我使用的是默认的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中找到。