Расширение Typo3 & ldquo; плагин не может быть определен & rdquo; исключение [дубликат]

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

0
задан Aaska Patel 5 March 2014 в 12:52
поделиться

2 ответа

В TYPO3 6.x вам рекомендуется использовать классы с именами и указать configurePlugin метод вашего имени поставщика.

Поскольку вы не указали какой-либо из вашего кода контроллера, я попытаюсь набросать it:

  1. Сначала убедитесь, что вы используете класс контроллера с именами - не забудьте указать имя поставщика.
  2. Убедитесь, что ваши действия названы с помощью функции *Action suffix

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 - Документы API TYPO3 для ExtensionUtility :: configurePlugin ()

Обновление:

Существует множество возможных ошибок.

  1. Вы подключили FlexForm. Вы установили switchableControllerActions соответствующим образом?
  2. Одна вещь, которую я видел более одного раза: f:link.action (или f: uri.action соответственно) не любит быть без соответствующего атрибута controller
  3. Вы явно пропустили концепцию пространства имен :) Переименуйте свой ControllerClass в HotelController, и файл должен жить в Classes/Controller/HotelController.php, затем выполните настройки configurePlugin(), чтобы отразить имя поставщика, как я описал
3
ответ дан empiric 20 August 2018 в 13:17
поделиться
  • 1
    эй Cedric Thnks за то, что вы дали ответ .. но еще не работали..открыть ту же ошибку .. !! – Aaska Patel 4 March 2014 в 06:35
  • 2
    Не могли бы вы рассказать нам свое пространство имен и другое содержимое файлов? Суть была бы фантастической. – Cedric 4 March 2014 в 11:58
  • 3
    см. мое редактирование, с пространством имен и контроллером – Aaska Patel 4 March 2014 в 12:54
  • 4
    Вы полностью пропустили предмет пространства имен, следуйте моим инструкциям. Tx_ * конфликты классов и имен. – Cedric 4 March 2014 в 13:11
  • 5
    Спасибо. make sure you re-install your extension сделал это для меня ... – max.haredoom 4 April 2014 в 22:03

Попробуйте.

в 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');

@ Очистить кеш и удалить данные typo3temp

0
ответ дан Ghanshyam Gohel 20 August 2018 в 13:17
поделиться
  • 1
    Эй, Ганьшьям .. !!! не работает. Показать ту же ошибку ... !! – Aaska Patel 4 March 2014 в 08:29
  • 2
    Какая версия TYPO3? и разработано с помощью extension_builder? – Ghanshyam Gohel 4 March 2014 в 08:35
  • 3
    версия: TYPO3 6.1 & amp; это расширение отеля, разработанное мной самостоятельно, не используя extension_builder .. Я пробовал с extension_builder, но давал мне ту же ошибку. – Aaska Patel 4 March 2014 в 08:45
Другие вопросы по тегам:

Похожие вопросы: