我尝试修改扩展名importr以向控制器插入自定义操作" Importr"在 importr \ Classes \ Controller \ ImportrController.php 。
我打电话给#34; customAction&#34;并使用<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;
}
未受理的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;
尝试#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'
]);
答案 0 :(得分:3)
有两个问题:
<强> 1。 ext_tables.php 强>
行动的顺序不正确。 第一个操作始终是默认操作,因此我将自定义操作作为默认操作,因此在单击左侧菜单中的Importr模块后没有加载任何页面。在我纠正之后它起作用了。
out.gif
<强> 2。流体强>
pluginName不正确,正确的pluginName是'Importr' => 'index,import,preview,create,custom',
,我们可以在ext_tables.php中看到
它甚至不需要,如果省略pluginName和extensionName,它也可以。
确保之后在安装工具中清除缓存。