【问题标题】:Default controller of 2nd plugin in extension can not be determined无法确定扩展中第二个插件的默认控制器
【发布时间】:2016-12-06 08:50:45
【问题描述】:

我在 TYPO3 6.2 中使用 extension builder 制作了一个 extbase 扩展,到目前为止,我有一个可用的前端插件。但是现在我想添加另一个可以使用该扩展的相同类的插件,我什至无法成功添加它。

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

捕获异常:扩展的默认控制器 ... 并且无法确定插件“Stats”。请检查 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";
    }

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

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

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

【问题讨论】:

  • 你清除了TYPO3配置缓存吗?
  • 请检查这个答案:stackoverflow.com/a/22160671/2070270 也许,你可以在那里找到一些提示
  • 只做一次扩展卸载/安装,因为有时这个错误是由于typo3缓存而出现的。
  • 对我来说似乎也是一个缓存问题。刷新typo3temp/Cache/Code/cache_core/ext_localconf*.php 以使您的ext_localconf.php 中的更改生效。
  • @Cold_Class 不。同一个控制器没问题。我在相同的情况下获得了多个扩展名。您可以尝试插入另一个空白内容元素并追溯您的步骤吗?

标签: typo3 extbase typo3-6.2.x


【解决方案1】:

当你声明你的第二个插件时,你在 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'

    )
);

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

【讨论】:

  • 但是我只有一个控制器,我希望两个插件都使用同一个控制器,叫做“AppointmentController”,这不可能吗??
【解决方案2】:

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

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

【讨论】:

  • 是的。您的插件配置存储在 tt_content.pi_flexform 中。但它不存储键引用,而是存储实际值本身。如果更改 flexform,配置会中断。
  • 我实际上并不了解 flexform 是什么......这些是标准的后端表单,人们可以使用它们添加内容和更改选项,例如用户组对页面的访问权限?我试图理解这个解释,但它已经在第一个名词“网格元素”上失败了,不知道他们在说什么元素:docs.typo3.org/typo3cms/extensions/gridelements/Chapters/…
猜你喜欢
  • 1970-01-01
  • 2014-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 2011-12-15
  • 1970-01-01
相关资源
最近更新 更多