我正在努力解决以下问题.
我有两个数据库表,"书籍"和"类别".我通过后端列表视图中的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
)
),
Run Code Online (Sandbox Code Playgroud)
它使用category_id(在Books-table中)和uid(在Category-table中)连接Books和Categories .
不像我想的那样,它会使用category_id(在Books-table中)和id(在Category-table中)连接它们.此id是类别的id,可以与uid不同.
我做错了什么,或Typo3以某种方式自动使这种"连接"到外国表uid.?有没有办法像我想的那样得到它?
恐怕无法指定不同的外键。因此,除非有人证明我错了,否则我会使用以下解决方法。
itemsProcFunc选择类型的类型允许您完全覆盖菜单中的项目,从而创建不同的关系。
创建一个仅在后端加载的额外类,并且该类将具有将在以下位置调用的方法itemsProcFunc:
yourMethod($PA, $fobj)
使该方法加载您想要在 SELECT 框中拥有的所有类别,并$PA['items']通过完全覆盖它来设置它们,以便它是一个数组数组,其中 0 键是元素标题,1 键是您想要的类别 ID 。参见items选择。
$PA['items'] = array(array($title, $id, ''));
将该类包含在ext_tables.php中:
if(TYPO3_MODE == 'BE') require_once(t3lib_extMgm::extPath($_EXTKEY).'class.YOUR_CLASS.php');
设置 books 表中类别字段的配置:
'itemsProcFunc' => 'tx_YOUR_CLASS->yourMethod',
| 归档时间: |
|
| 查看次数: |
7896 次 |
| 最近记录: |