如何在typo3 7 TCA中添加自定义向导?

ebi*_*hew 4 typo3 typo3-7.x

当我尝试在TCA中添加名为wizard_geo_selector的向导时,出现错误"模块未注册".请告诉我如何在TCA中正确注册向导.

Dav*_*vid 6

在TYPO3版本7.6中添加了新的向导,如下所示:

  1. 在您的扩展程序内创建目录 Configuration/Backend/
  2. 在新目录中创建一个文件Routes.php,它将自动找到,不需要提及in ext_localconf.php或者ext_tables.php是必需的.如果您仍需要Ajax,可以将文件添加AjaxRoutes.php到同一文件夹中.
  3. 内容Routes.php:

    return array(
        'my_wizard_element' => array(
            'path' => '/wizard/tx_geoselecotor/geo_selector_wizard',
            'target' => \Path\To\your\class\WizardGeoSelector::class . '::WizardAction'
        ),
    );
    
    Run Code Online (Sandbox Code Playgroud)

内容为 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'
 ));
Run Code Online (Sandbox Code Playgroud)

如果您不确定符号,可以与后端的全局变量中的现有条目进行比较:

导航到系统 - >配置 - >后端路由

路径的路径处理不同,对于Ajax,它总是"ajax"前置,所以你永远不会将它添加到路径中,否则它在路径中是两次.对于公共路由,定义的字符串没有变化.

  1. 现在可以使用向导,甚至永远不必在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',
        ),
    ),
    
    Run Code Online (Sandbox Code Playgroud)

在userFunc中,Path/to/class/without/wizard->renderForm您将创建一个链接到向导的按钮,然后单击向导将打开您在Routes.php和可选urlParameters中定义的路径.

目前我从来没有在核心文档中找到这整个项目.

编辑:
有关路由的详细信息,请参阅此处:路由

可以在此处找到呈现过程:Rendering/NodeFactory 您可能还应该阅读链接段落的外部上下文.

编辑2:
可以在这里找到一个示例扩展,有些东西永远不会100%工作,但向导正在工作.扩展名适用于TYPO3版本7:https:
//github.com/DavidBruchmann/imagemap_wizard