Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何创建TYPO3后端模块设置页面?_Php_Typo3_Typo3 9.x - Fatal编程技术网

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

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

我有版本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',
    )
);
新的后端模块出现在菜单中的管理工具下。但是,下一步要查看包含模块设置字段的页面,我必须做什么?我还需要保存它们并在前端使用


抱歉,我必须指定我的用例。我需要实现我的设置页面。我的意思是我已经在菜单中添加了模块项。但在那里实施设置的最佳方式是什么?甚至确切地说,我想在那里显示我从ext_conf_模板文件的扩展配置,以及在那里更改设置的可能性。

您必须实现名为
settings
的控制器,并在PHP类中实现名为
mainAction()的方法。
。假设您的扩展键读取
my_example
,那么PHP名称空间应该是:

  • CBWebdesign\MyExample\Controller\Settings
…并且扩展名中控制器文件的文件/路径为:

  • Classes/Controller/Settings.php
您还必须实现视图(例如使用)。控制器“设置”和操作“主”的模板文件应位于:

  • Classes/Resources/Private/Templates/Settings/Main.html
我建议查看TYPO3附带的现有系统扩展的源代码(例如位于
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
),并将配置存储在那里。

谢谢您的回答!我更新了我的问题,我指定了我的用例