Wenn ich versuche, den Assistenten mit dem Namen wizard_geo_selector in TCA hinzuzufügen, kam ein Fehler "Modul nicht registriert". Bitte sagen Sie mir, wie Sie den Assistenten richtig in der TCA registrieren.Wie man benutzerdefinierte Wizards in typo3 7 TCA?
Antwort
In TYPO3 Version 7.6 neue Assistenten werden wie folgt hinzugefügt:
- Innerhalb Ihrer Erweiterung das Verzeichnis erstellen
Configuration/Backend/
- Im neuen Verzeichnis eine Datei
Routes.php
, wird es automatisch zu finden, nicht zu erwähnen,in ext_localconf.php
oderext_tables.php
ist erforderlich. Wenn Sie Ajax noch benötigen, können Sie die DateiAjaxRoutes.php
im selben Ordner hinzufügen. Inhalte für
Routes.php
:return array( 'my_wizard_element' => array( 'path' => '/wizard/tx_geoselecotor/geo_selector_wizard', 'target' => \Path\To\your\class\WizardGeoSelector::class . '::WizardAction' ), );
Inhalte für AjaxRoutes.php
<?php
/**
* Definitions for routes provided by EXT:backend
* Contains all AJAX-based routes for entry points
*
* Currently the "access" property is only used so no token creation + validation is made
* but will be extended further.
*/
return array('my_ajax_element' => array(
'path' => 'tx_geoselecotor/my_ajax_route',
'target' => \Path\To\your\class\MyAjaxController::class .'::myAjaxFunction'
));
Wenn Sie über die Schreibweise nicht sicher sind Sie mit den bestehenden Einträgen in den globalen Variablen im Backend vergleichen:
Navigieren Sie zu System -> Konfiguration -> Backend Routen
Die Route der Pfade unterschiedlich gehandhabt wird, für Ajax ist es immer „Ajax“ vorangestellt, so dass Sie nie haben es auf den Pfad hinzuzufügen, sonst ist es zweimal in der Route. Für die gemeinsame Route ändert sich nichts an der definierten Zeichenkette.
Jetzt kann der Wizard verwendet werden und auch er muss nie in ext_tables definiert werden.php es im Konfigurationsbereich (Modul [name]) gibt es von jedem Tabellenfeld erwähnt werden muss:
'table_field_for_wizard' => array( 'label' => 'LLL:EXT:my_extension/Resources/Private/Language/locallang.xml:table_name.tx_myextension_wizard', 'config' => array ( 'type' => 'user', 'userFunc' => 'Path/to/class/without/wizard->renderForm', 'wizards' => array( 'my_wizard' => array( 'type' => 'popup', 'title' => 'MyTitle', 'JSopenParams' => 'height=700,width=780,status=0,menubar=0,scrollbars=1', 'icon' => 'EXT:' . $_EXTKEY . '/Resources/Public/img/link_popup.gif', 'module' => array( 'name' => 'my_wizard_element', 'urlParameters' => array( 'mode' => 'wizard', 'ajax' => '0', 'any' => '... parameters you need' ), ), ), '_VALIGN' => 'middle', '_PADDING' => '4', ), # Optional #'softref'=>'something', ), ),
Im userFunc Path/to/class/without/wizard->renderForm
Sie haben eine Schaltfläche zu erstellen, die auf die Verknüpfung wird wizard und onKlicken Sie auf den Assistenten, der mit der Route geöffnet wird, die Sie in Routes.php und den optionalen URL-Parametern definiert haben.
Zur Zeit habe ich diesen ganzen Artikel nie in der Kern-Dokumentation erklärt.
Edit:
Details zum Routing finden Sie hier: Routing
Die Rendering-Prozess finden Sie hier: Rendering/NodeFactory Sie sollten wahrscheinlich lesen Sie auch den äußeren Rahmen des verknüpften Absatz.
IN TCA den Assistenten fügen Sie wie folgt vor:
'module' => array(
'name' => 'wizard_geo_selector',
),
In ext_tables.php den Assistenten registrieren.
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModulePath(
'wizard_geo_selector',
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Modules/Wizards/Yourwizardname/'
);
Denken Sie daran, diese seit Typo3 ist veraltet 7 und in Typo3 8.So entfernt diese Methode bis zu Typo3 7.For Typo3 8 die Methode, mit David unten angegeben verwenden kann.
Rickys Antwort nicht wirklich mehr arbeiten, da addModulePath ist seit Version veraltet 7.
Auch nur das Modul wie diese Registrierung noch die geben dem Sie Fehler.
Das einzige, was der Assistent wieder ist dies in Gang hält:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule('wizard','pbsurvey_answers',"",\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY).'wizard/');
Aber wenn Sie diese hinzufügen, wird das Modul als neuer Punkt im Backend TYPO3.
gibt mir gleiche Fehler „Modul AppWizard nicht konfiguriert ist.“ –
david's antwort funktioniert wie ein charme, das ist der weg es zu tun. – CDRO
können Sie erklären, Sie vollständigen Code wie tca Konfiguration –