首页 文章

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

提问于
浏览
-1

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

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

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

controller action:

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

但是,每次尝试将参数传递给操作都会失败 . 在我第一次尝试时,我甚至没有点击按钮就会出现错误页面,如下面的屏幕截图所示 .


Attempt #1

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

未捕获TYPO3异常1298012500:未为HDNET \ Importr \ Controller \ ImportrController-> custom设置必需参数“taskid” . 在第425行的文件/var/www/typo3/typo3_src-6.2.25/typo3/sysext/extbase/Classes/Mvc/Controller/AbstractController.php中抛出TYPO3 \ CMS \ Extbase \ Mvc \ Controller \ Exception \ RequiredArgumentMissingException .

importer


Attempt #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'


Attempt #3:

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

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

输出:TASKID =''

我不知道还能尝试什么 . 我有可能在流体代码中犯了错误吗?我使用错误的pluginName或extensionName还是甚至是一个错误的bug? pluginName存储在哪里,所以我可以查看它?



More Infos

我通过将其添加到 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 回答

  • 3

    有两个问题:

    1. ext_tables.php

    行动的顺序不正确 . 第一个操作始终是默认操作,因此我将自定义操作作为默认操作,因此在单击左侧菜单中的Importr模块后没有加载任何页面 . 我纠正后它起作用了 .

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

    2. Fluid

    pluginName不正确,正确的pluginName是 file_importrtximportrmod ,我们可以在ext_tables.php中看到

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

    确保之后清除安装工具中的缓存 .

相关问题