在我的 TCA 中,我使用select
到另一张桌子。
'modules' => [
'label' => 'LLL:EXT:myextension_module_table/Resources/Private/Language/locallang_db.xlf:tx_myextension_domain_model_semester.modules',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'enableMultiSelectFilterTextfield' => true,
'foreign_table' => 'tx_myextension_domain_model_module',
'minitems' => 1,
'maxitems' => 99,
],
],
在“所选项目”下,我可以对项目进行排序。现在我想在流体中使用这种排序顺序。在数据库中,我看到了正确的顺序21,1,2,3,4,28
。但在流畅的情况下,项目总是按照uid排序。
添加'sortby' => 'sorting',
所有必需的更改并不能解决我的问题。在这种情况下,我可以在列表视图中订购记录。但我不想要这个订单。我想在前端的“选定项目”中显示订单。
在我的 ModuletableController.php 中,我从Flexform获得所选的模块表。
/**
* action show
*
* @param \Vendor\Myextension\Domain\Model\Moduletable $moduletable
* @return void
*/
public function showAction(\Vendor\Myextension\Domain\Model\Moduletable $moduletable = NULL) {
if (is_null($moduletable)) {
$moduletable = $this->moduletableRepository->findByUid($this->settings['singleModuleTable']);
}
$this->view->assign('moduletable', $moduletable);
}
在模板中 Show.html I循环播放它。
<html xmlns:f="http://typo3.org/ns/TYPO3/Fluid/ViewHelpers">
<f:layout name="Default" />
<f:section name="main">
<h2>{moduletable.title}</h2>
<f:for each="{moduletable.semester}" as="semester">
<p>{semester.title}</p>
<f:for each="{semester.modules}" as="module">
<p{module.title}</p>
</f:for>
</f:for>
</f:section>
答案 0 :(得分:1)
解决方案是使用MM表。然后在TCA选择字段中设置排序顺序。
在TCA:
'modules' => [
'label' => 'LLL:EXT:myextension/Resources/Private/Language/locallang_db.xlf:tx_myextension_domain_model_semester.modules',
'config' => [
'type' => 'select',
'renderType' => 'selectMultipleSideBySide',
'enableMultiSelectFilterTextfield' => true,
'foreign_table' => 'tx_myextension_domain_model_module',
'foreign_sortby' => 'sorting',
'MM' => 'tx_myextension_semester_module_mm',
'minitems' => 1,
'maxitems' => 99,
],
],
在ext_tables.sql
中CREATE TABLE tx_myextension_semester_module_mm (
uid_local int(11) unsigned DEFAULT '0' NOT NULL,
uid_foreign int(11) unsigned DEFAULT '0' NOT NULL,
sorting int(11) unsigned DEFAULT '0' NOT NULL,
sorting_foreign int(11) unsigned DEFAULT '0' NOT NULL,
KEY uid_local (uid_local),
KEY uid_foreign (uid_foreign)
);
答案 1 :(得分:0)
如何获取Extbase控制器中的选定项?也许你可以在这里使用这个findByUidListOrderByList函数:http://blog.teamgeist-medien.de/2014/09/typo3-extbase-repository-find-by-multiple-uids-findbyuids.html#comment-90