Я написал командный контроллер, который обрабатывает импорт данных из URL-адреса. псевдо-синтаксис выглядит так:Вызов CommandController из ActionController в PHP/TYPO3 Extbase
class ImportCommandController extends \TYPO3\CMS\Extbase\Mvc\Controller\CommandController
{
public function importCommand($auth){
$data = file_get_content();
}
}
это работает. Но когда я пытаюсь вызвать эту команду из Action Controller моего внутреннего модуля, я получаю ошибки. Heres код: ActionController:
class ImportController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{
/**
* @var \Vendor\MyExt\Command\ImportCommandController importCommandCtrl
* @inject
*/
protected $importCommandCtrl;
public function importAction()//($url,$usr,$pass)
{
//$this->importCommandCtrl = GeneralUtility::makeInstance('Vendor\MyExt\Command\ImportCommandController');
$this->importCommandCtrl->testCommand();
}
}
Когда я называю importAction()
, как это, я получаю:
"Обращение к функции члена testCommand() на нуль"
Когда Я раскомментирую makeInstance
, я получаю:
«Вызовите функцию-член get() по нулевому значению«
К сожалению, эта тема плохо документирована в документах TYPO3. Может ли кто-нибудь помочь мне в этом или указать мне в правильном направлении?
В будущем injectFunctions используют вместо аннотаций @injects – jokumer
Вы правы. Инъекционные методы действительно лучше, чем анализ аннотаций. Но они также раздувают код примера, поэтому я использовал @inject здесь. – Daniel
Подождите, что? Вводная аннотация влияет на производительность? Не заботится об этом кеш объекта? – j4k3