php - 无法在数据库中保存 CHECKBOX 字段类型 - Joomla 2.5

标签 php mysql joomla

我的 .xml 文件中的 Joomla 2.5 有多个 checkboxes 字段

<field name="player_number"
           type="text"
           label="Player number"
           description="Enter Player's number here"
           class="inputbox"
           size="30"
           required="true"
    />

    <field name="player_dob" type="calendar" default="" label="Select a date" description=""  required="true" format="%Y-%m-%d" />

    <field name="player_position" type="checkboxes">
        <option value="Left">Left</option>
        <option value="Right">Right</option>
        <option value="Middle">Middle</option>
    </field>

我在数据库中有相关数据列,例如 player_numberplayer_dobplayer_position

我有工具栏,可以在其中添加记录或编辑现有记录。

我可以成功ADD player_numberplayer_dob,并且现有值也会加载到EDIT View 中。

问题是 CHECKBOX 值未保存到数据库中。

即使我从 phpmyadmin 输入 player_position 的值,相关值也不会在编辑 View 表单中显示为“已检查”

最佳答案

令人烦恼的是,该字段类型在文档中指出“它将为您创建复选框,并以数组形式提交它们的值,但不会将它们存储在数据库中。”

这意味着如果您希望保存它,您必须重写 JTable 存储函数。 http://docs.joomla.org/API16:JTable/store

下面的代码是我上次使用Joomla 3时使用的相关代码(2.5应该类似)。 demofield 是我的复选框的名称,edit 是出现复选框的 View 的名称。此覆盖保存在 admin/tables/edit.php 下:

class TableEdit extends JTable {

    public function store($updateNulls = true)
    {

        JArrayHelper::toString($this->demofield);
        $this->demofield= implode(',', $this->demofield); 
        return parent::store($updateNulls);
    } 
}

还值得注意的是,列表字段类型允许多选,并将保存在数据库中。这可能是一个更简单的解决方案。 http://docs.joomla.org/List_form_field_type

关于php - 无法在数据库中保存 CHECKBOX 字段类型 - Joomla 2.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24624532/

相关文章:

mySQL,需要帮助将许多子查询转换为 1 个 SELECT 查询(显示 13 列)

php - cookie 中的数组,使用 pdo 查询访问

html - 子项样式与事件父项不同

php - 如何配置 PHP 服务器变量 $_SERVER ['DOCUMENT_ROOT' ]?

php - 解析错误:syntax error, unexpected T_STRING

PHP在函数中添加多个JOIN方法

php - Joomla 获取页面 ID

php - 如何在 PHP 中获取有用的错误消息?

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

html - 减少加载时间,或让用户认为加载时间更少