从 tt_content flexform 设置中获取 sys_categories

Get sys_categories from tt_content flexform settings

假设我有一个 FE 插件,可以通过以下 flexform 字段设置一些 sys_category 引用:

                    <settings.categories>
                    <TCEforms>
                        <label>Some Label</label>
                        <config>
                            <type>select</type>
                            <foreign_table>sys_category</foreign_table>
                            <foreign_table_where> AND sys_category.sys_language_uid IN (-1, 0) ORDER BY sys_category.sorting ASC</foreign_table_where>
                            <MM>sys_category_record_mm</MM>
                            <MM_opposite_field>items</MM_opposite_field>
                            <MM_match_fields>
                                <tablenames>tt_content</tablenames>
                                <fieldname>categories</fieldname>
                            </MM_match_fields>
                            <maxitems>9999</maxitems>
                            <renderMode>tree</renderMode>
                            <size>10</size>
                            <treeConfig>
                                <appearance>
                                    <expandAll>1</expandAll>
                                    <showHeader>1</showHeader>
                                </appearance>
                                <parentField>parent</parentField>
                            </treeConfig>
                        </config>
                    </TCEforms>
                </settings.categories>

现在我想在插件的控制器中获取flexform 中引用的所有类别对象。这样做的最佳方法是什么?某处不应该已经有合适的存储库功能了吗?感谢您的帮助!

没有专门的 API,但是通常您不需要 mm 关系。删除它并使其像

<settings.categories>
                        <TCEforms>
                            <label>LLL:EXT:news/Resources/Private/Language/locallang_be.xlf:flexforms_general.categories</label>
                            <config>
                                <type>select</type>
                                <renderMode>tree</renderMode>
                                <renderType>selectTree</renderType>
                                <treeConfig>
                                    <dataProvider>GeorgRinger\News\TreeProvider\DatabaseTreeDataProvider</dataProvider>
                                    <parentField>parent</parentField>
                                    <appearance>
                                        <maxLevels>99</maxLevels>
                                        <expandAll>TRUE</expandAll>
                                        <showHeader>TRUE</showHeader>
                                        <width>600</width>
                                    </appearance>
                                </treeConfig>
                                <foreign_table>sys_category</foreign_table>
                                <foreign_table_where>AND (sys_category.sys_language_uid = 0 OR sys_category.l10n_parent = 0) ORDER BY sys_category.sorting</foreign_table_where>
                                <size>15</size>
                                <minitems>0</minitems>
                                <maxitems>99</maxitems>
                            </config>
                        </TCEforms>
                    </settings.categories>

检索类别更容易。你也可以看看我在新闻扩展中使用的CategoryRepositoryhttps://github.com/georgringer/news/blob/master/Classes/Domain/Repository/CategoryRepository.php