TYPO3 ExtBase - 未设置必需参数X

时间:2017-01-18 09:35:29

标签: php typo3 typo3-6.2.x

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

我打电话给#34; customAction&#34;并使用<f:link.action>

importr \ Resources \ Private \ Templates \ Importr \ Index.html 中使用流体渲染的按钮引用它
<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;
}
  

未受理的TYPO3例外

     

1298012500:必需参数&#34; taskid&#34;未设置为HDNET \ Importr \ Controller \ ImportrController-&gt; custom。

     

TYPO3 \ CMS \ Extbase \的mvc \控制器\异常\ RequiredArgumentMissingException   抛出文件   /var/www/typo3/typo3_src-6.2.25/typo3/sysext/extbase/Classes/Mvc/Controller/AbstractController.php   在第425行。&#39;

importer

尝试#2

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

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

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

输出:TASKID =&#39;默认&#39;

尝试#3:

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

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

输出:TASKID =&#39;&#39;

我不知道还能尝试什么。我有可能在流体代码中犯了错误吗?我使用错误的pluginName或extensionName还是甚至是一个错误的bug? 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 个答案:

答案 0 :(得分:3)

有两个问题:

<强> 1。 ext_tables.php

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

out.gif

<强> 2。流体

pluginName不正确,正确的pluginName是'Importr' => 'index,import,preview,create,custom', ,我们可以在ext_tables.php中看到

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

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