0

Backened モジュール (EXT:wec_map) を使用して TYPO3 4.x に拡張機能を持っています。

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule(
    'tools','txwecmapM1',
    '',
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath('wec_map').'Classes/Module/MapAdministration/'
);

さて、TYPO3 4.x を TYPO3 8.7.8 にアップグレードしました。バックエンド モジュールに問題があり、ツール メニュー グループに空のスペースが表示されます。非推奨のモジュール登録方法を次のように置き換えました。

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
    'txwecmapM1',
    'tools', // Make module a submodule of 'web'
    'txwecmapM1', // Submodule key
    '', // Position
    [
        'access' => 'user,group',
        'icon'   => 'EXT:' . $extKey . '/Resources/Public/Icons/user_mod_bewebuser.svg',
        'labels' => 'LLL:EXT:' . $extKey . '/Resources/Private/Languages/Module/MapAdministration/locallang_mod.xlf',
    ]
);

それはうまく機能していますが、アイコンにはデフォルトのtypo3アイコンが表示され、ラベルには「:mlang_labels_tablabel」が表示されます。誰でもこれで私を助けることができますか?

次に、モジュールをクリックすると、次のように表示されます。

"Could not analyse class: "Tx_TxwecmapM1_Controller_accessController" maybe not loaded or no autoloader? Class Tx_TxwecmapM1_Controller_accessController does not exist"

私を助けてください...

4

2 に答える 2

0

パーティーには少し遅れましたが、それでもここにそれを行う方法があります (thx to Typo3 slack)。

\TYPO3\CMS\Backend\Module\BaseScriptClass次の関数を拡張および追加する Classes/Controller に Controller を作成します。

function loadMCONF()
{
    $this->MCONF = $GLOBALS['TBE_MODULES']['_configuration']['myext_mymoduleM1'];
}

function init()
{
    $this->loadMCONF();
    parent::init();

    $this->getBackendUser()->modAccess($this->MCONF, 1);
    $this->pageRenderer = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Page\PageRenderer::class);
    $this->doc = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Backend\Template\DocumentTemplate::class);
}


public function mainAction(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response)
{
    $this->postVars = $request->getParsedBody();
    $this->init();
    $this->main();
    $response->getBody()->write($this->content . $this->doc->endPage());
    return $response;
}`

そうすれば、古いコードのほとんどを main() と init() から再利用できます。

addModule を使用してモジュールを登録します。

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule(
    'myext',
    'mymoduleM1',
    '',
    '',
    [
        'routeTarget' => \MyVendor\MyExt\Controller\BackendModuleController::class . '::mainAction',
        'access' => 'admin',
        'name' => 'myext_mymoduleM1',
        'labels' => [
            'tabs_images' => [
                'tab' => 'EXT:myext/Resources/Public/Icons/BackendModule.svg',
            ],
            'll_ref' => 'LLL:EXT:myext/Resources/Private/Language/locallang_mod.xml',
        ]
    ]
);
于 2018-10-29T16:39:44.503 に答える