TYPO3:如何在后端模块中使用pagetree中的存储pid?

问题描述 投票:0回答:1

我使用 Extension Builder 创建了一个扩展,并在 Web 部分下包含了一个后端模块。在生成的代码中,有两个存储 pid 常量:一个用于插件,一个用于模块。

现在我喜欢我的模块使用页面树中选定页面或文件夹中的存储 pid,就像页面、列表或模板模块一样。如何在后端模块中使用 pagetree 中的存储 pid 而不是使用常量?

php typo3 extbase
1个回答
6
投票

要从后端模块的页面树中获取所选页面,一种方法是简单地获取

id
参数,最好在初始化程序中获取。

由于 extbase 从模块(或前端插件)设置中读取存储 pid,因此您只需覆盖

storagePid
部分,这样您就不必为每个查询/否则在存储库中设置 pid。

以下应该有效。但是,我在 CommandController 中使用它,而不是在后端使用的控制器中使用它。我没有在那里更改任何内容,因为存储库自动将记录范围限制到所选页面。

class Tx_MyExt_Controller_BackendController extends Tx_Extbase_MVC_Controller_ActionController {

    /**
     * @var Tx_Extbase_Configuration_ConfigurationManagerInterface
     * @inject 
     */
    protected $configurationManager;

    /**
     * @var int Current page
     */
    protected $pageId;


    /**
     * Action initializer
     *
     * @return void
     */
    protected function initializeAction()
    {
        $this->pageId = (int)t3lib_div::_GP('id');

        $frameworkConfiguration = $this->configurationManager->getConfiguration(Tx_Extbase_Configuration_ConfigurationManagerInterface::CONFIGURATION_TYPE_FRAMEWORK);
        $persistenceConfiguration = array('persistence' => array('storagePid' => $this->pageId));
        $this->configurationManager->setConfiguration(array_merge($frameworkConfiguration, $persistenceConfiguration));
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.