#php #typo3 #typo3-6.2.x
#php #typo3 #typo3-6.2.x
Вопрос:
Я пытаюсь добавить новый контроллер, у которого есть одно действие, вызываемое confirmAgbAction
.
<?php
namespace EddcaponeMyExtensionController;
/**
* CustomController
*/
class CustomController extends TYPO3CMSExtbaseMvcControllerActionController
{
/**
* action list
*
* @return void
*/
public function confirmAgbAction()
{
echo "<p>HALLO WELT</p>";
}
}
Я даже добавил его в ext_localconf.php
<?php
if (!defined('TYPO3_MODE')) {
die('Access denied.');
}
TYPO3CMSExtbaseUtilityExtensionUtility::configurePlugin(
'Eddcapone.' . $_EXTKEY,
'Myfilelist',
array(
'Category' => 'list,show',
'File' => 'show',
'Download' => 'download',
'Custom' => 'confirmAgb'
),
// non-cacheable actions
array(
'Category' => 'list,show',
'File' => 'topFive',
'Download' => 'download',
'Custom' => 'confirmAgb'
)
);
Вот как я вызываю действие в шаблоне:
<f:link.action controller="Custom" action="confirmAgb" pluginName="Myfilelist" class="mbButton">Download</f:link.action>
Тем не менее, я всегда получаю:
#1313855173: The controller "Custom" is not allowed by this plugin. Please check for TYPO3CMSExtbaseUtilityExtensionUtility::configurePlugin() in your ext_localconf.php.
Комментарии:
1. самый глупый вопрос в начале: вы очистили кеш в инструменте установки с помощью кнопки «Очистить весь кеш»?
2. Очистите кэш с помощью инструмента установки
3. Нет, это не глупый вопрос 😉 да, я очистил все 3 кэша и даже очистил
typo3temp
Ответ №1:
Есть две общие возможности для вашей ошибки:
- Вы используете flexform для встраивания своего плагина. Либо вы не добавили
Custom->confirmAgb
к разрешенным вызовам в вашей гибкой форме, либо вы добавили его, но не обновили плагин (конфигурация плагина обновляется только при сохранении элемента plugin/tt_content) - У вас есть два плагина на странице, и ошибка вызвана другим плагином, потому что там
controller->action
комбинация не разрешена.
PS: попробуйте добавить это в свой TS (setup.txt ) и теперь плагины должны выбрать действие по умолчанию, если указанное не найдено:
plugin.tx_yourextensionmvc.callDefaultActionIfActionCantBeResolved = 1
Могут быть и более необычные случаи
Комментарии:
1. Вы были правы, я использовал два плагина, и проблема была из-за гибкой формы. Разработчики typo3 slack рекомендовали мне не использовать
switchablecontrolleractions
, поэтому я удалил его из flexforms. Сначала это не помогло, только после того, как я также сохранил плагин / tt_content. Спасибо!2. Нет необходимости удалять функциональность flexform, я почти уверен, что вы также можете выполнить обходной путь в Typo3 6.2.x. Попробуйте добавить это в свое расширение setup.txt : plugin.tx_yourextension { mvc.callDefaultActionIfActionCantBeResolved = 1 }
3. Хотя это вероятные возможности, существует определенно больше, чем эти два варианта того, что пойдет не так. Это одна из тех ошибок, у которых много разных причин.
Ответ №2:
Вам абсолютно следует избегать использования $_EXTKEY в configurePlugin и других контекстах Extbase. Для Extbase требуется Vendor.ExtensionName
формат — $ _EXTKEY находится в lowercase_underscored
формате. Определение этих параметров как жестко закодированных значений должно решить вашу проблему с разрешением контроллеров для вашего данного плагина.
Чтобы быть точным: используйте Eddcapone.Myextension
в качестве параметра имени расширения в вашей команде (командах) для регистрации / настройки плагинов.
Комментарии:
1. Спасибо за информацию! Хорошо, я изменил каждое появление
$_EXTKEY
во всем моем расширении наMyExtension
, но я все равно получаю:#1313855173: The controller "Custom" is not allowed by this plugin. Please check for TYPO3CMSExtbaseUtilityExtensionUtility::configurePlugin() in your ext_localconf.php.
Так что проблема должна быть где-то в другом месте.2. Обновление для всех, кто читает: причиной было предыдущее использование switchableControllerActions, а также повторное использование записи элемента содержимого, которая содержала значения switchableControllerActions после того, как они были удалены из схемы . Очистка поля записи решила проблему.