【问题标题】:Joomla field type checkbox doesn't update databaseJoomla 字段类型复选框不更新数据库
【发布时间】:2014-03-03 12:19:59
【问题描述】:

我创建了一个组件。我尝试将数据从 xml 表单存储到数据库中。这适用于所有文本字段,但“复选框”字段会出现问题。

这里是xml代码:

<field name="color" type="checkboxes" label="COM_COLOR" multiple="true">
     <option value="1">red</option>
     <option value="2">blue</option>
     <option value="3">green</option>
     <option value="4">yellow</option>             
</field>

edit.php 中的代码

<?php echo $this->form->getInput('color'); ?>

它与 Joomla 文档完全相同: http://docs.joomla.org/Checkboxes_form_field_type

但如果我点击保存复选框值未存储在数据库中。任何人都可以帮忙吗?谢谢

Joomla 版本:3.2.1

编辑:现在可以了! 将以下代码写入扩展 JTable 的 php 文件中。 (your_component/tables/your_file.php)

public function store($updateNulls = true)
{
    JArrayHelper::toString($this->color);
    $this->color= implode(',', $this->color); 
    return parent::store($updateNulls);
} 

【问题讨论】:

  • 您能否澄清一下您是在字段集内部还是外部执行此操作,以及字段或字段集名称是否与数据库中的字段名称匹配?

标签: checkbox joomla types field


【解决方案1】:

在您提供的文档中明确说明:

注意:[...] 它会为你创建复选框,并以数组的形式提交它们的值,但它不会将它们存储在数据库中。

要按照documentation that you provided 中的说明检索您必须执行的值,请获取复选框值的整个数组并分别处理它们。否则,您可以创建单独的复选框,这些复选框将开箱即用更多信息here

【讨论】:

  • 谢谢 ilias... 我没看到!
  • 我已将字段类型更改为“列表”。但是有同样的问题!这些值未保存在数据库中。你有什么建议吗??
  • 如何获取列表项?您可以使用模型中的一些代码或从您获取和保存数据的位置更新问题吗?
  • 我刚刚将字段类型从“复选框”更改为“列表”。我认为 joomla save() 方法会完成剩下的工作......我必须在哪里获取数据?其他字段,如“文本”或“媒体”或其他字段,无需获取数据即可正常工作。
  • 我无法想象你的代码是什么样子的。我最后的猜测是列表的color名称与数据库中的字段不一样或者数据库字段类型不同。
【解决方案2】:

在 Joomla > 2.5 中,您可以将其存储为逗号分隔的字符串。您必须覆盖默认保存功能,添加一行以创建逗号分隔的字符串。

例如:

function save(){    

  $data = JRequest::getVar( 'jform', null, 'post', 'array' );
  $checkbox_options = $data['checkbox_field_name'];

  $data['checkbox_field_name']=implode(",", $checkbox_options);

  JRequest::setVar('jform', $data );

  return parent::save();
}

希望这有助于节省别人的时间。 :) 编码快乐..!!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-22
    • 2011-06-23
    • 2014-05-10
    • 2014-07-09
    • 2016-05-16
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    相关资源
    最近更新 更多