php - 无法确定扩展和插件的默认 Controller TYPO3 中的错误

标签 php typo3

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

 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 6.x 中,建议您使用命名空间类并告诉 configurePlugin方法您的供应商名称。

由于您没有包含任何 Controller 代码,我将尝试绘制它的草图:

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

外部: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() 进行调整反射(reflect)我所描述的供应商名称

关于php - 无法确定扩展和插件的默认 Controller TYPO3 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22146726/

相关文章:

typo3 - TYPO3 realURL自动配置为手动配置

typo3 - 如何在 Typo3 v8 上设置自己的带有子域的 CDN?

typo3 - Typo3 Extension Builder 中的空白域建模页面

php - 读取最新创建的文件 php

typo3 - 仅在不为空时显示来自 FCE 的字段

TYPO3:将多个参数传递给流体模板中的局部变量

php - Capistrano 重启 Apache

php - PHP 7 中的 <=>( 'Spaceship' 运算符)是什么?

php - 在特定时间更改数据库字段

php - curl -F 是什么意思? PHP Instagram