Когда я пытаюсь добавить мастера с именем wizard_geo_selector в TCA, возникла ошибка «модуль не зарегистрирован». Пожалуйста, скажите мне, как правильно зарегистрировать мастер в TCA.?Как добавить пользовательские мастера в typo3 7 TCA?
ответ
В TYPO3 версии 7.6 новые мастера не добавляются так:
- Внутри вашего расширения создать каталог
Configuration/Backend/
- В новом каталоге создать файл
Routes.php
, он будет найден автоматически, не упоминаяin ext_localconf.php
илиext_tables.php
не требуется. Если вам все еще нужен Ajax, вы можете добавить файлAjaxRoutes.php
в ту же папку. Содержание для
Routes.php
:return array( 'my_wizard_element' => array( 'path' => '/wizard/tx_geoselecotor/geo_selector_wizard', 'target' => \Path\To\your\class\WizardGeoSelector::class . '::WizardAction' ), );
Содержимое для 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'
));
Если вы не уверены в обозначении можно сравнить с существующими записями в глобальных переменных в Backend:
Перейдите к системе -> Конфигурация -> Backend Маршруты
Маршрут путей обрабатывается различными, Ajax это всегда «Аякса» которые начинаются, так что вы никогда не добавить его в путь, иначе это в два раза в пути. Для общего маршрута изменений относительно определенной строки нет.
Теперь мастер можно использовать, и даже он никогда не должен определяться в ext_tables.PHP это должно быть упомянуто здесь из любой таблицы поля в конфигурационной области (модуль [имя]):
'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', ), ),
В UserFunc Path/to/class/without/wizard->renderForm
вы, чтобы создать кнопку, которая линкующая мастер и onClick мастер откроется с маршрутом, определенным вами в Routes.php и дополнительными параметрами urlParameters.
В настоящее время я не нашел весь этот предмет, объясненный в основной документации.
Edit:
Подробная информация о маршрутизации можно найти здесь: Routing
Процесс визуализации можно найти здесь: Rendering/NodeFactory Вы, вероятно, следует прочитать также внешний контекст связанного пункта.
В TCA добавить мастера, как следует:
'module' => array(
'name' => 'wizard_geo_selector',
),
В ext_tables.php зарегистрировать мастера.
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModulePath(
'wizard_geo_selector',
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY) . 'Modules/Wizards/Yourwizardname/'
);
Имейте в виду, что это не рекомендуется, так как Typo3 7 и удалены в TYPO3 8.So вы можете использовать этот метод Шифрование до Typo3 7.For Typo3 8 действительно используют метод, указанный David ниже.
ответ Рики действительно не работает больше, так как addModulePath IST устарела начиная с версии 7.
Кроме того, только регистрируя модуль, как это до сих пор дают нам вы сказали об ошибке.
Единственное, что держит мастер идя снова это:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addModule('wizard','pbsurvey_answers',"",\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::extPath($_EXTKEY).'wizard/');
Но когда вы добавляете этот модуль появляется как новая точка в вашем TYPO3 интерфейсе.
дает мне такую же ошибку «Модуль appWizard не настроен». –
Ответ Дэвида работает как шарм, это способ сделать это. – CDRO
вы можете объяснить вам полный код, например, конфигурацию tca. –