Я пытаюсь изменить расширение importr, чтобы вставить пользовательское действие в контроллер «Importr» в importr \ Classes \ Controller \ ImportrController.php.TYPO3 ExtBase - Требуемый аргумент X не установлен
Я назвал действия "CustomAction" и ссылку на него с помощью кнопки, которую я рендеринга с жидкостью в importr \ Resources \ Private \ Templates \ Importr \ Index.html с помощью <f:link.action>
<div id="myButton">
<f:link.action
extensionName="Importr"
pluginName="Importr"
controller="Importr"
action="custom"
arguments="{taskid:5}"
>
Click here
</f:link.action>
</div>
действие контроллера:
/**
* @param int $taskid
* @return void
*/
public function customAction($taskid)
{
...
}
Однако любая попытка передать параметр в действие не выполняется. С моей первой попытки я даже получаю страницу с ошибкой, даже не нажимая на кнопку, как вы можете видеть на скриншоте ниже.
Попытка # 1
/**
* @param int $taskid
* @return void
*/
public function customAction($taskid)
{
print_r($taskid);
die;
}
Uncaught TYPO3 Исключение
1298012500 Обязательный аргумент "TaskID" не установлен для HDNet \ Importr \ Controller \ ImportrController-> пользовательский.
TYPO3 \ CMS \ Extbase \ Mvc \ Controller \ Exception \ RequiredArgumentMissingException выброшен в файле /var/www/typo3/typo3_src-6.2.25/typo3/sysext/extbase/Classes/Mvc/Controller/AbstractController.php в строке 425. '
Попытка # 2
/**
* @return void
*/
public function customAction()
{
$taskid = "default";
if ($this->request->hasArgument('taskid')) {
$taskid = $this->request->getArgument('taskid');
}
echo "TASKID = '$taskid'";
die;
...
ВЫХОД: TaskId = 'по умолчанию'
Покушение # 3:
/**
* @return void
*/
public function customAction()
{
$args = $this->request->getArguments();
$taskid = $args['taskid'];
echo "TASKID = '$taskid'";
die;
ВЫВОД: TaskId = ''
Я не знаю, что еще я могу попробовать. Возможно ли, что я допустил ошибку в Fluid Code? Я использую неправильное имя pluginName или extensionName или это даже ошибка typo3? Где хранится имя pluginName, поэтому я могу проверить его?
Больше информации
я позволил мое пользовательское действие, добавив его к другим действиям внутри ext_tables.php
<?php
if (!defined('TYPO3_MODE')) {
die('Access denied.');
}
/** @var string $_EXTKEY */
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerModule(
'HDNET.' . $_EXTKEY,
'file',
'tx_importr_mod',
'',
[
'Importr' => 'custom,index,import,preview,create',
],
[
'access' => 'user,group',
'icon' => 'EXT:' . $_EXTKEY . '/ext_icon.gif',
'labels' => 'LLL:EXT:' . $_EXTKEY . '/Resources/Private/Language/locallang_mod.xlf'
]);
Если это решение, отметьте его как один, thx;) –
Я пока не могу, потому что вам сначала нужно подождать несколько дней после того, как вы сможете принять свой собственный ответ.: P Я могу принять его через 2 дня. – Black