Php 无法在TYPO3中确定扩展和插件的默认控制器错误
我构建了一个扩展,我想在将插件添加到页面时添加插件选项Php 无法在TYPO3中确定扩展和插件的默认控制器错误,php,typo3,Php,Typo3,我构建了一个扩展,我想在将插件添加到页面时添加插件选项 Extension Name : hotels 在酒店模型中 <?php class Hotel{ ... get set methods ... } ?> 在ext_tables.php中 \TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin( $_EXTKEY, 'hotels',
Extension Name : hotels
在酒店模型中
<?php
class Hotel{
... get set methods ...
}
?>
在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');
\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');
不知怎么的,我想我错过了什么。这会产生一个错误:
在添加扩展时,我可以在后端看到该选项,但当我想显示(查看)添加该扩展的页面时,会生成一个错误
----> 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
方法您的供应商名称
由于您没有包含任何控制器代码,我将尝试勾画它:
*Action
后缀命名您的操作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')
);
这允许类定位器正确解析类
要验证它,请确保重新安装扩展
请尽可能在6.x中使用命名空间类。旧的Tx.*
类只是别名,会增加解释器的负载
更新:
有许多可能的错误
switchableControllerActions
f:link.action
(或者分别是f:uri.action)不喜欢没有适当的控制器
属性HotelController
,文件必须位于Classes/Controller/HotelController.php
,然后对configurePlugin()
进行调整,以反映我描述的供应商名称在TYPO3 6.x中,建议您使用命名空间类,并告诉
configurePlugin
方法您的供应商名称
由于您没有包含任何控制器代码,我将尝试勾画它:
*Action
后缀命名您的操作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')
);
这允许类定位器正确解析类
要验证它,请确保重新安装扩展
请尽可能在6.x中使用命名空间类。旧的Tx.*
类只是别名,会增加解释器的负载
更新:
有许多可能的错误
switchableControllerActions
f:link.action
(或者分别是f:uri.action)不喜欢没有适当的控制器
属性HotelController
,文件必须位于Classes/Controller/HotelController.php
,然后对configurePlugin()
进行调整,以反映我描述的供应商名称 \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'TYPO3.' . $_EXTKEY,
'hotels',
array('Hotel' => 'list,single,display,update,save,preview,edit')
);
\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'
);
$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');
\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');
@清除缓存并删除typo3temp数据试试
在ext_localconf.php中
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
'TYPO3.' . $_EXTKEY,
'hotels',
array('Hotel' => 'list,single,display,update,save,preview,edit')
);
\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'
);
$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');
\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');
@清除缓存并删除typo3temp数据尝试重新安装扩展、添加插件并清除TYPO3缓存?嘿,克里斯托夫。。!!还没开始工作。。!!!试图重新安装扩展、添加插件并清除TYPO3缓存?嘿,Christoph。。!!还没开始工作。。!!!嘿,塞德里克,谢谢你的回答。。但尚未工作..显示相同的错误。。!!你能告诉我们你的名字空间和其他文件的内容吗?要点太棒了。你完全错过了名称空间,请按照我的指示去做。Tx_*类和名称空间冲突。我们还经历了完全删除插件并再次创建插件解决了这个问题。嘿,Cedric Thnks,谢谢你的回答。。但尚未工作..显示相同的错误。。!!你能告诉我们你的名字空间和其他文件的内容吗?要点太棒了。你完全错过了名称空间,请按照我的指示去做。Tx_*类和名称空间冲突。我们还经历了完全删除插件并再次创建插件可以解决此问题。TYPO3的哪个版本?并使用extension_builder?版本:TYPO3 6.1开发&此酒店扩展由我自己开发,不使用extension_builder。。我尝试使用extension_builder,但出现了相同的错误。TYPO3的哪个版本?并使用extension_builder?版本:TYPO3 6.1开发&此酒店扩展由我自己开发,不使用extension_builder。。我尝试使用extension_builder,但出现了相同的错误。。