自定义组件中的joomla 3.x标记失败

时间:2014-04-12 14:39:30

标签: php joomla joomla3.0

运行Joomla 3.3.0-dev

我发布了here发布的有关向第三方组件添加标记支持的信息。

我已将内容类型添加到#__content_types表格并修改了我的table文件,如下所示:

class MycomponentTableElement extends JTable
{
    public $tagsHelper = null; // failed when protected and public

    public function __construct(&$_db)
    {
        parent::__construct('#__mycomponent', 'id', $_db);
        // Add Joomla tags
        JObserverMapper::addObserverClassToClass('JTableObserverTags', 'MycomponentTableElement', array('typeAlias' => 'com_mycomponent.element'));
        //$this->_observers = new JObserverUpdater($this); JObserverMapper::attachAllObservers($this); // failed with or without this line  
    }

我在edit模板中添加了标记字段,它运行正常 - 但是当我保存对象时出现以下错误:

Save failed with the following error: Unknown column 'tagsHelper' in 'field list'

我错过了什么?提到的没有其他步骤(除了前端步骤!)。似乎我需要修改模型,但该信息不适用。

由于

2 个答案:

答案 0 :(得分:0)

" 此页面需要复制编辑"这是真的!

我还按照第

页中所述的初始步骤进行操作
  • 注册'内容类型'对于扩展视图
  • 添加观察员方法'到扩展表类(es)
  • 添加'标记字段'扩展名编辑表格

但是要使字段标记适用于自定义扩展,我需要在后端的视图文件中显式设置表单字段值:

$tagsHelper = new JHelperTags;

$this->form= $this->get('Form');

$this->form->setValue('tags', null, $tagsHelper->getTagIds( $this->item->id, 'com_custom.viewname') );

以这种方式编辑页面似乎都正常工作..肯定存在更好更干净的方法,但是直到doc页面不会更新,这可以帮助别人!

答案 1 :(得分:0)

1-将标记字段添加到xml表单文件或编辑模板文件

2-修改#__content_types表格文件:

function __construct(&$db)
    {
        parent::__construct('#__ir_products', 'id', $db);
        JTableObserverTags::createObserver($this, array('typeAlias' => 'com_itemreview.product'));
    }

3-修改模型文件getItem函数:

public function getItem($pk = null)
    {
        $item = parent::getItem($pk);

        if (!empty($item->id))
        {
            $item->tags = new JHelperTags;
            $item->tags->getTagIds($item->id, 'com_yourcomponent.yourmodel');
        }
        return $item;
    }