Php 如何创建TYPO3后端模块设置页面?
我有版本9.5.9,并通过使用以下功能添加了一个后端模块:Php 如何创建TYPO3后端模块设置页面?,php,typo3,typo3-9.x,Php,Typo3,Typo3 9.x,我有版本9.5.9,并通过使用以下功能添加了一个后端模块: \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule( 'CBWebdesign.' . $_EXTKEY, 'tools', // Make module a submodule of 'admin' 'tools', // Submodule key 'top', // Position array( 'Sett
\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',
)
);
新的后端模块出现在菜单中的管理工具下。但是,下一步要查看包含模块设置字段的页面,我必须做什么?我还需要保存它们并在前端使用
抱歉,我必须指定我的用例。我需要实现我的设置页面。我的意思是我已经在菜单中添加了模块项。但在那里实施设置的最佳方式是什么?甚至确切地说,我想在那里显示我从ext_conf_模板文件的扩展配置,以及在那里更改设置的可能性。您必须实现名为
settings
的控制器,并在PHP类中实现名为mainAction()的方法。
。假设您的扩展键读取my_example
,那么PHP名称空间应该是:
CBWebdesign\MyExample\Controller\Settings
Classes/Controller/Settings.php
Classes/Resources/Private/Templates/Settings/Main.html
TYPO3/sysext/extensionmanager/
的扩展管理器)。他们都遵循这一模式。[基于更新问题的新答案]
在扩展名的模板文件ext\u conf\u template.txt
中指定的TYPO3扩展名配置存储在TYPO3的系统范围配置typo3conf/LocalConfiguration.php
中。这些配置将由TYPO3 core管理,并仅由具有管理权限的后端用户编辑
您可以在管理工具下的TYPO3 9.5.x版中找到更改这些设置的功能➜ 设置➜ 扩展配置如以下屏幕截图所示:
通过使用TYPO3的API,您可以轻松地访问扩展中的这些设置(例如在控制器中)。例如,要访问扩展配置的值foo
:
使用\TYPO3\CMS\Core\Configuration\ExtensionConfiguration;
使用\TYPO3\CMS\Core\Utility\GeneralUtility;
...
$extensionKey='my_example';
$foo=GeneralUtility::makeInstance(ExtensionConfiguration::class)
->获取($extensionKey,'foo');
然后,您可以将变量$foo
传递给视图(例如流体),以将其输出给用户(后端和/或前端)
但是,不要在您自己的扩展中更改扩展配置!这不是函数或核心类扩展配置的目的。只有使用TYPO3的安装工具(如上所示)才能维护这种类型的配置
请参阅文件typo3/sysext/core/Classes/Configuration/ExtensionConfiguration.php
中的注释
API以获取特定于实例的扩展配置选项。
[……]
注意只有->get()
是官方API,其他公共方法是低级核心内部API,通常仅由扩展管理器和安装工具使用
还要注意,此类中的其他方法标记为@internal
虽然访问和处理(甚至显示)配置不是问题,但不应在安装工具之外对其进行更改
根据您的特定用例,您可能需要考虑使用后端用户(包括编辑器)配置扩展的某些方面,或者(如果配置应该限制管理员用户)。对于更复杂的场景,您可以创建一个专用数据库表(或扩展现有表,如
be\u users
),并将配置存储在那里。谢谢您的回答!我更新了我的问题,我指定了我的用例