无法确定扩展中第二个插件的默认控制器

时间:2016-12-06 08:50:46

标签: typo3 extbase typo3-6.2.x

我在TYPO3 6.2中使用扩展构建器创建了一个 extbase 扩展,到目前为止,我有一个正在运行的前端插件。但是现在我想添加另一个可以使用该扩展的相同类的插件,我甚至无法成功添加它。

点击应显示我的新插件的页面时,我收到此错误:

  

抓住异常:扩展程序的默认控制器...   和插件“统计”无法确定。请检查   TYPO3 \ CMS \ Extbase \ Utility \ ExtensionUtility :: configurePlugin()在你的   ext_localconf.php。

这就是我之前所做的:
在扩展构建器中添加新插件“Stats”后,我在ext_localconf.php中看到以下代码:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'CC.' . $_EXTKEY,
    'Appoints',
    array(
        'Appointment' => 'list, show, new, create, edit',
        'Feedback' => 'new, create, list',

    ),
    // non-cacheable actions
    array(
        'Appointment' => 'list, show, new, create, edit',
        'Feedback' => 'new, create, list',

    )
);

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'CC.' . $_EXTKEY,
    'Stats',
    array(
        'Appointment' => 'statistic',

    ),
    // non-cacheable actions
    array(
        'Appointment' => 'statistic',

    )
);

在ext_tables.php中我得到了:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    'CC.' . $_EXTKEY,
    'Appoints',
    'Appointments'
);

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    'CC.' . $_EXTKEY,
    'Stats',
    'Statstics'
);

扩展构建器似乎完美地完成了所有工作。

在我的AppointmentController.php中 (这是正确的命名空间 - namespace Vendor\Extname\Controller;)我补充说:

    public function statisticAction() {
        echo "testing";
    }

然后我在后端将新插件添加到了我的页面。 (请忽略我已经纠正的图片中的拼写错误,但这不是我问题的原因)
        enter image description here

那么可能是什么原因?我怎样才能以最简单的方式解决这个问题? 我应该在扩展构建器中的switchableControllerActions中输入内容吗,因为我使用的是同一个控制器,但是插件不同,但操作不同?如果是这样 - 什么?

  编辑:我发现它必须与我的后端页面有关,idk是什么 - 但是如果我在同一页面上更改它的工作原理,...我正在寻找这两个页面之间的原因差异这可能导致这个...

2 个答案:

答案 0 :(得分:0)

当你宣布第二个插件时,你在ext_localconf.php中输入了一个拼写错误,

    "Stats": \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'CC.' . $_EXTKEY,
    'Stats',
    array(
        'Appointment' => 'statistic', ==> 'Statistics' => 'statistic'

    ),
    // non-cacheable actions
    array(
        'Appointment' => 'statistic', ==> 'Statistics' => 'statistic'

    )
);

因为“Statistics”是该插件的正确控制器名称,如果您将其称为“StatisticsController”。

答案 1 :(得分:0)

与所有评论中的所有人一样,我所做的一切都是正确的,并且应该有效... ... 我注意到我的插件在一个后端页面上工作但在另一个页面上没有工作 由于我无法找到导致这两个页面的两个页面之间的任何差异,我删除了它们并创建了两个新页面,每个页面插入一个插件。

现在它有效...所以我的解决方案如果你遇到类似的问题:
在尝试深入挖掘原因之前,只需尝试删除有问题的后端页面并创建一个新页面。也许它可以解决问题,它为我做了。