TYPO3: Extbase/Fluid im BE Modul

Backend Modul, erstellt mit Extbase und Fluid Templates – ohne viel Bla-Bla:

ext_tables.php

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
    'TYPO3.' . $_EXTKEY,
    'tools',
    'tx_myext_m1',
    '',
    array(
        'Backend' => 'migrate',
    ),
    array(
        'access' => 'user, group',
        'icon' => 'EXT:my_ext/ext_icon.gif',
        'labels' => 'LLL:EXT:my_ext/Resources/Private/Language/locallang.xlf',
    )
);

locallang.xlf

<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<xliff version="1.0">
    <file source-language="en" datatype="plaintext" original="messages" product-name="loewen_be">
        <header/>
        <body>
            <trans-unit id="mlang_tabs_tab">
                <source>Löwen</source>
            </trans-unit>
            <trans-unit id="mlang_labels_tabdescr">
                <source>BE Modul für Löwen</source>
            </trans-unit>
        </body>
    </file>
</xliff>

ext_typoscript_setup.typoscript

module.tx_myext {
&nbsp;&nbsp;&nbsp; view {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; templateRootPaths {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 = EXT:my_ext/Resources/Private/Templates/
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; partialRootPaths {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 = EXT:my_ext/Resources/Private/Partials/
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; layoutRootPaths {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 = EXT:my_ext/Resources/Private/Layouts/
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; }
    settings {
        // your TypoScript setup for backend module
    }
}

Resources/Private/Templates/Backend/Migrate.html

<f:layout name="Backend"/>
 
<f:section name="main">
&nbsp;&nbsp; &nbsp;<h1>Migrate Service Centers</h1>
&nbsp;&nbsp; &nbsp;<f:flashMessages renderMode="div" />
 
&nbsp;&nbsp; &nbsp;<f:form action="migrate" name="migrate">
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<f:form.submit name="submit" value="Migrate!" />
&nbsp;&nbsp; &nbsp;</f:form>
</f:section>

Resources/Private/Layouts/Backend.html

<f:be.container>
&nbsp;&nbsp; &nbsp;<div&nbsp;class="typo3-fullDoc">
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<div id="typo3-docheader">
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<div class="typo3-docheader-functions">
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<div&nbsp;class="left">
                    <f:be.buttons.csh />
                    <f:be.menus.actionMenu>
                        <f:be.menus.actionMenuItem label="{f:translate(key: 'LLL:EXT:my_ext/Resources/Private/Language/locallang.xlf:action.action1')}" controller="Backend" action="action1" />
                        <f:be.menus.actionMenuItem label="{f:translate(key: 'LLL:EXT:my_ext/Resources/Private/Language/locallang.xlf:action.action2')}" controller="Backend" action="action2" />
                    </f:be.menus.actionMenu>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;</div>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<div&nbsp;class="right">
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<f:be.buttons.shortcut />
                    <f:be.pagePath />
                    <f:be.pageInfo />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;</div>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;</div>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;</div>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<div id="typo3-docbody">
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<div id="typo3-inner-docbody">
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;<f:render section="main" />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;</div>
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;</div>
&nbsp;&nbsp; &nbsp;</div>
</f:be.container>

 Classes/Controller/BackendController.php

namespace TYPO3\MyExt\Controller;
class BackendController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {
&nbsp;&nbsp;&nbsp; // TypoScript settings
    protected $settings = array();
    // id of selected page
&nbsp;&nbsp;&nbsp; protected $id;
    // info of selected page
&nbsp;&nbsp;&nbsp; protected $pageinfo;
 
&nbsp;&nbsp;&nbsp; protected function initializeAction() {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this->id = (int)\TYPO3\CMS\Core\Utility\GeneralUtility::_GP('id');
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this->pageinfo = \TYPO3\CMS\Backend\Utility\BackendUtility::readPageAccess($this->id, $GLOBALS['BE_USER']->getPagePermsClause(1));
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $configurationManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Configuration\BackendConfigurationManager::class);
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this->settings = $configurationManager->getConfiguration(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this->request->getControllerExtensionName(),
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this->request->getPluginName()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );
&nbsp;&nbsp;&nbsp; }
 
&nbsp;&nbsp;&nbsp; /**
&nbsp;&nbsp;&nbsp;&nbsp; * action
&nbsp;&nbsp;&nbsp;&nbsp; *
&nbsp;&nbsp;&nbsp;&nbsp; * @return void
&nbsp;&nbsp;&nbsp;&nbsp; */
&nbsp;&nbsp;&nbsp; public function migrateAction() {
        $objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\ObjectManager::class);
        $migrateRepository = $objectManager->get(\Vendor\MyExt\Domain\Repository\MigrateRepository::class);
 
        // form submitted
        if($this->request->hasArgument('submit')) {...}
 
        // add value to view
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this->view->assign('var', 'value');
 
        // display message
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $this->addFlashMessage(
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'Some text',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'The title',
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \TYPO3\CMS\Core\Messaging\FlashMessage::WARNING
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; );
&nbsp;&nbsp;&nbsp; }
}

CSS/JS Datei einlesen

<f:be.container addCssFile="{f:uri.resource(path:'path/to/file.css')}" addJsFile="{f:uri.resource(path:'path/to/file.js')}">...</f:be.container>

Fragen?

Autor:
Geändert: Montag, 13. April 2020 10:55 Uhr
Erstellt: Dienstag, 18. Februar 2014 15:34 Uhr
Tags: , , , , , , ,
Themengebiet: Web Entwicklung, TYPO3, TYPO3 Programmierung

Trackback: Trackback-URL LoadingZu Favoriten hinzufügen

Ein Kommentar

  1. 1

    […] ein Backend Modul mit Extbase/Fluid erstellt und dort auch ein Menü anbietet, kann man in diesem Artikel […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.