Typo3 foreign_table&在TCA中的foreign_table_where

时间:2012-03-16 17:21:54

标签: typo3

我正在努力解决以下问题。

我有两个数据库表,“Books”和“Category”。我通过后端列表视图中的Sysfolder从“书籍”表中获取所有数据,以进行编辑,排序和控制。

我想得到的是,该列表视图中还会出现该书所属类别的名称。

在“Books”表中,有一个字段外键"category_id",它定义了Book所属的类别。我已尝试通过此"category_id"获取图书列表视图中类别的名称。

当我在TCA['books']中定义category_id喜欢:

'category_id' => array (        
            'exclude' => 0,     
            'label' => 'Cat name',      
            'config' => array (
                'type'     => 'select',
                'foreign_table' => 'category',
                'foreign_table_where' => 'AND category.id=###REC_FIELD_category_id###',
                'eval'     => 'int',
                'checkbox' => '0',
                'default' => 0
            )
        ),

它使用category_id(在Books-table中)和uid(在Category-table中)连接书籍和类别。

不像我想的那样,它会使用category_id(在Books-table中)和id(在Category-table中)连接它们。这个id是类别的id,可以与uid不同。

我做错了什么或Typo3以某种方式自动与外国表uid进行“连接”。 ?有没有办法像我想的那样得到它?

2 个答案:

答案 0 :(得分:3)

我担心不可能指定不同的外键。因此,除非有人证明我错了,否则这是我将使用的解决方法。

select 类型的

itemsProcFunc允许您完全覆盖菜单中的项目,从而创建不同的关系。

  1. 创建一个仅在后端加载的额外类,它将具有将在itemsProcFunc中调用的方法:

    yourMethod($PA, $fobj)

  2. 使方法在SELECT框中加载您想要的所有类别,并通过完全覆盖它在$PA['items']中设置它们,以便它是一个数组数组,其中0键是元素title和1键是您想要的类别ID。请参阅 select 中的items

    $PA['items'] = array(array($title, $id, ''));

  3. ext_tables.php 中包含该课程:

    if(TYPO3_MODE == 'BE') require_once(t3lib_extMgm::extPath($_EXTKEY).'class.YOUR_CLASS.php');

  4. 在books表中设置category字段的配置:

    'itemsProcFunc' => 'tx_YOUR_CLASS->yourMethod',

答案 1 :(得分:0)

除了cascaval的好答案: @cascaval:您是否介意在选择链接中指向Typo3TCA中的select.items?目前的链接不是直截了当的。

http://docs.typo3.org/typo3cms/TCAReference/singlehtml/#columns-select-properties-items

(没有权限对你的回答发表评论,所以不得不为这个链接回答自己......很奇怪)