【问题标题】:The default controller for extension and plugin can not be determined ERROR in TYPO3无法确定扩展和插件的默认控制器 TYPO3 中的错误
【发布时间】:2014-04-04 11:58:30
【问题描述】:

我构建了一个扩展,我想在将插件添加到页面时添加插件选项

 Extension Name : hotels

在酒店模型中,

 <?php
    class Hotel{
          ... get set methods ...
      }
  ?>

在 HotelController.php 中

 <?php
  namespace TYPO3\Hotels\Controller; 

   class HotelController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController{

    public function listAction(){
      //    $this->view->assign('result', array('test' => 'hello, u r in list'));               }
   }
 ?>

在 ext_localconf.php 中

 \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'TYPO3.' . $_EXTKEY,
    'hotels',
     array('Hotel' => 'list,single,display,update,save,preview,edit')
    );

在 ext_tables.php 中

  \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    $_EXTKEY,
    'hotels',
   'list of Hotels'
   );

 $pluginSignature = str_replace('_','',$_EXTKEY) . '_hotels';

 $TCA['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] ='pi_flexform';

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:' . $_EXTKEY . '/Configuration/FlexForms/flexform_myhotel.xml');

不知何故,我想我错过了一些东西。这给出了一个错误:

我可以在添加扩展程序时在后端看到该选项,但是当我想显示(查看)我添加该扩展程序的页面时,会产生错误。

----> The default controller for extension "Hotels" and plugin "hotels" can not be determined. Please check for TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin() in your ext_localconf.php.

请指导我

【问题讨论】:

  • 尝试重新安装扩展、添加插件并清除 TYPO3 缓存?
  • 嘿克里斯托夫..!!还没有工作..!!!

标签: php typo3


【解决方案1】:

在 TYPO3 6.x 中,建议您使用命名空间类并告诉 configurePlugin 方法您的供应商名称。

由于您没有包含任何控制器代码,我将尝试绘制它:

  1. 首先,请确保您使用命名空间控制器类记住来设置供应商名称。
  2. 确保您的操作以*Action 后缀命名

EXT:myext/Classes/Controller/HotelController

namespace MyVendor\MyExt\Controller;
class HotelController {
    /**
    * @return void
    */
     public function listAction(){
     }
}

接下来,像这样在 configurePlugin 中提及命名空间:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'MyVendor.' . $_EXTKEY,
    // UpperCamelCase please, refer to [1]
    'Hotels',
     array('Hotel' => 'list,single,display,update,save,preview,edit')
);

这允许类定位器正确解析类。

要验证它,请确保重新安装您的扩展程序。

PS:请在 6.x 中尽可能使用命名空间类。旧的 Tx_* 类只是别名,会给您的解释器带来额外的负担。

1 - TYPO3 API Docs for ExtensionUtility::configurePlugin()

更新:

有很多可能的错误。

  1. 您连接了 FlexForm。您是否正确设置了switchableControllerActions
  2. 我不止一次看到的一件事:f:link.action(或分别为 f:uri.action)不喜欢没有适当的 controller 属性
  3. 您显然错过了命名空间概念 :) 将您的 ControllerClass 重命名为 HotelController 并且文件必须位于 Classes/Controller/HotelController.php 中,然后对 configurePlugin() 进行调整以反映我描述的 vendorName

【讨论】:

  • 嘿 Cedric 感谢您给出答案.. 但还没有工作.. 显示相同的错误..!!
  • 您能告诉我们您的命名空间和相关文件的其他内容吗?一个要点会很棒。
  • 你完全错过了命名空间的东西,请按照我的指示。 Tx_* 类和命名空间冲突。
  • 我们也经历过,完全移除插件并重新创建插件可以解决这个问题。
【解决方案2】:

试试看。

在 ext_localconf.php 中

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'TYPO3.' . $_EXTKEY,
    'hotels',
    array(
        'Hotel' => 'list,single,display,update,save,preview,edit'
    ),
    // non-cacheable actions
    array(
        'Hotel' => 'list',
    )
);

在 ext_tables.php 中

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    $_EXTKEY,
    'hotels',
    'list of Hotels'
);

$extensionName  = \TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($_EXTKEY);
$pluginSignature = strtolower($extensionName). '_hotels';


if (TYPO3_MODE === 'BE') {

    /**
     * Registers a Backend Module
     */
    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
        'TYPO3.' . $_EXTKEY,
        'web',   // Make module a submodule of 'web'
        'hotels',   // Submodule key
        '',                     // Position
        array(
            'Hotel' => 'list,single,display,update,save,preview,edit'
        ),
        array(
            'access' => 'user,group',
            'icon'   => 'EXT:' . $_EXTKEY . '/ext_icon.gif',
            'labels' => 'LLL:EXT:' . $_EXTKEY . '/Resources/Private/Language/locallang_hotels.xlf',
        )
    );

}

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile($_EXTKEY, 'Configuration/TypoScript', 'Hotels List');

@Clear 缓存并删除typo3temp 数据

【讨论】:

  • TYPO3 的哪个版本?并使用 extension_builder 开发?
  • version : TYPO3 6.1 & this hotel extension由我自己开发,没有使用extension_builder ..我试过extension_builder但给了我同样的错误..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多