我在Joomla中遇到了问题,但无法找到解决方案。我有一个测试版本,它运行得很好,但在实时版本上却没有......
在Joomla的管理员中有一个复选框:
<input type="checkbox" name="jform[certificate]" id="jform_certificate" value="1" class="inputbox">
在数据库中有一个包含列证书的表,其值为“0”或“1”。如果选中并保存了复选框,它将从Joomla中获取其值。
保存到数据库工作;我选中复选框,按“保存”,数据库中的值从“0”变为“1”。
但是当我再次查看该复选框时,虽然数据库中的值已更改,但未选中该复选框,而在第43行的/libraries/joomla/form/fields/checkbox.php中,它指出$checked = ((string) $this->element['value'] == $this->value) ? ' checked="checked"' : '';
。这应该将checkbox值与数据库值进行比较,如果两者相等,则应返回checked属性:
<input type="checkbox" name="jform[certificate]" id="jform_certificate" value="1" class="inputbox" checked="checked">
由于某种原因,它没有从数据库中获得适当的值?有人知道我应该搜索的地方吗?或者我在哪里可以找到添加了checked属性的脚本?
提前致谢!
解
我发现了问题。数据库中列的类型是BIT类型,我将其更改为INT类型,它现在似乎工作。见下面的答案。
答案 0 :(得分:0)
数据库中列的类型是BIT类型,我将其更改为INT类型,现在似乎可以正常工作。
据我所知,PHP代码$checked = ((string) $this->element['value'] == $this->value) ? ' checked="checked"' : '';
比较一个整数,它将复选框中的值编号与数据库的值编号进行比较。 BIT类型表示数据库中的值“1”表示TRUE
,数据库中的值“0”表示FALSE
。