如何创建TYPO3后端模块设置页面?

时间:2019-09-29 06:56:12

标签: php typo3 typo3-9.x

我拥有TYPO3版本9.5.9,并通过使用以下功能添加了后端模块:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
    'CBWebdesign.' . $_EXTKEY,
    'tools', // Make module a submodule of 'admin'
    'tools', // Submodule key
    'top', // Position
    array(
        'Settings' => 'main',
    ),
    array(
        'access' => 'admin',
        'icon' => 'EXT:' . $_EXTKEY . '/Resources/Public/icons/template/tx_ext_cbwebdesigntemplate.gif',
        'labels' => 'LLL:EXT:' . $_EXTKEY . '/Resources/Private/Language/locallang_cbwebdesigntemplate.xlf',
    )
);

新的后端模块出现在 ADMIN TOOLS 下的菜单中。但是,下一步要查看包含模块设置字段的页面怎么办?另外,我需要保存它们并在前端使用。

对不起,我必须指定用例。我需要实现我的设置页面。我的意思是我已将模块项添加到菜单中。但是在那里实现设置的最佳方法是什么?甚至确切地说,我想在那里显示ext_conf_template文件中的扩展名配置,并在那里更改设置。

2 个答案:

答案 0 :(得分:1)

[基于最新问题的新答案]

您在扩展名的模板文件ext_conf_template.txt中指定的

TYPO3扩展名配置存储在TYPO3的系统级配置typo3conf/LocalConfiguration.php中。这些配置只能由TYPO3内核管理,并且只能由具有管理权限的后端用户编辑。

您可以在TYPO3 9.5.x版的 ADMIN TOOLS➜设置➜扩展配置下找到更改这些设置的功能,如以下屏幕截图所示:

TYPO3 backend

您可以使用TYPO3的API轻松访问扩展程序中的这些设置(例如,在控制器中)。例如,要访问扩展配置的值foo

use \TYPO3\CMS\Core\Configuration\ExtensionConfiguration;
use \TYPO3\CMS\Core\Utility\GeneralUtility;
...
$extensionKey = 'my_example';
$foo = GeneralUtility::makeInstance(ExtensionConfiguration::class)
  ->get($extensionKey, 'foo');

然后您可以将变量$foo传递到视图(例如Fluid)以将其输出到用户(后端和/或前端)。

但是,请勿在自己的扩展程序中更改扩展程序配置!这不是函数或核心类ExtensionConfiguration的目的。这种类型的配置只能使用TYPO3的安装工具进行维护(如上所示)。

查看文件typo3/sysext/core/Classes/Configuration/ExtensionConfiguration.php中的注释。

  

API到get()实例的扩展配置选项。   [...]

     

仅注意->get()是官方API,其他公共方法是底层核心内部API,通常仅由扩展管理器和安装工具使用。

还要注意,此类中的其他方法被标记为@internal

虽然访问和处理(甚至显示)配置不是问题,但您不应在安装工具之外对其进行更改。

根据您的特定用例,您可能需要考虑使用FlexForms来让后端用户(包括编辑者)配置扩展的某些方面-或TypoScript (如果应该限制管理员用户的配置)。对于更复杂的情况,您可以创建一个专用的数据库表(或扩展现有的表,例如be_users)并将配置存储在此处。

答案 1 :(得分:0)

您必须实现一个名为Settings的控制器,并在PHP类中实现一个名为mainAction()的方法。假设您的扩展密钥为my_example,则PHP名称空间应为:

  • CBWebdesign\MyExample\Controller\Settings

...并且扩展名中控制器文件的文件/路径为:

  • Classes/Controller/Settings.php

您还必须实现 view (例如,使用Fluid)。控制器“设置”和操作“主”的模板文件应位于:

  • Classes/Resources/Private/Templates/Settings/Main.html

我建议检查TYPO3随附的现有系统扩展的源代码(例如,位于typo3/sysext/extensionmanager/的扩展管理器)。他们都遵循这种范例。

相关问题