TYPO3 ExtBase - 未设置必需的参数 X

TYPO3 ExtBase - Required argument X is not set

我尝试修改扩展 importr 以在 importr\Classes\Controller\ImportrController 处向控制器 "Importr" 插入自定义操作。php.

我调用了动作 "customAction" 并从我在 importr\Resources\Private\Templates\Importr\Index.html 中使用流体渲染的按钮引用了它<f:link.action>

<div id="myButton">
  <f:link.action 
      extensionName="Importr" 
      pluginName="Importr" 
      controller="Importr" 
      action="custom" 
      arguments="{taskid:5}"
  >
    Click here
  </f:link.action>
</div>

控制器动作:

/**
 * @param int $taskid
 * @return void
 */
public function customAction($taskid)
{
    ...
}

但是,每次尝试将参数传递给操作都会失败。 在我的第一次尝试中,我什至没有点击按钮就得到了一个错误页面,如下面的屏幕截图所示。


尝试 #1

/**
 * @param int $taskid
 * @return void
 */
public function customAction($taskid)
{
    print_r($taskid);
    die;
}

Uncaught TYPO3 Exception

1298012500: Required argument "taskid" is not set for HDNET\Importr\Controller\ImportrController->custom.

TYPO3\CMS\Extbase\Mvc\Controller\Exception\RequiredArgumentMissingException thrown in file /var/www/typo3/typo3_src-6.2.25/typo3/sysext/extbase/Classes/Mvc/Controller/AbstractController.php in line 425.'


尝试 #2

/**
 * @return void
 */
public function customAction()
{           
    $taskid = "default";

    if ($this->request->hasArgument('taskid')) {
        $taskid = $this->request->getArgument('taskid');
    }

    echo "TASKID = '$taskid'";
    die;
    ...

OUTPUT: TASKID = 'default'


尝试 #3:

/**
     *  @return void
 */
public function customAction()
{
        $args = $this->request->getArguments();
        $taskid = $args['taskid'];

        echo "TASKID = '$taskid'";
        die;

OUTPUT: TASKID = ''

我不知道还能尝试什么。有没有可能我在流体代码中犯了错误?我是否使用了错误的 pluginName 或 extensionName 或者它甚至是 typo3 错误? pluginName 存储在哪里以便我可以查看?



更多信息

我通过将自定义操作添加到 ext_tables.php

中的其他操作来允许自定义操作
<?php

if (!defined('TYPO3_MODE')) {
    die('Access denied.');
}

/** @var string $_EXTKEY */

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
    'HDNET.' . $_EXTKEY,
    'file',
    'tx_importr_mod',
    '',
[
    'Importr' => 'custom,index,import,preview,create',
],
[
    'access' => 'user,group',
    'icon' => 'EXT:' . $_EXTKEY . '/ext_icon.gif',
    'labels' => 'LLL:EXT:' . $_EXTKEY . '/Resources/Private/Language/locallang_mod.xlf'
]);

有两个问题:

1. ext_tables.php

操作顺序不正确。 第一个操作始终是默认操作,因此它将我的自定义操作作为默认操作,因此在单击左侧菜单中的 Importr 模块后没有加载任何页面。我修改后就成功了

'Importr' => 'index,import,preview,create,custom',

2。流体

插件名称不正确,正确的插件名称是file_importrtximportrmod,我们可以在ext_tables.php

中看到

甚至不需要,如果省略 pluginName 和 extensionName 也可以。

确保之后在安装工具中清除缓存。