Контроллер не разрешен этим плагином

#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:

Есть две общие возможности для вашей ошибки:

  1. Вы используете flexform для встраивания своего плагина. Либо вы не добавили Custom->confirmAgb к разрешенным вызовам в вашей гибкой форме, либо вы добавили его, но не обновили плагин (конфигурация плагина обновляется только при сохранении элемента plugin/tt_content)
  2. У вас есть два плагина на странице, и ошибка вызвана другим плагином, потому что там 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 после того, как они были удалены из схемы . Очистка поля записи решила проблему.