2017-01-18 8 views
-1

Ich versuche, die Erweiterung importr zu ändern, um eine benutzerdefinierte Aktion auf den Controller "Importr" unter importr \ Klassen \ Controller \ ImportrController.php einzufügen.TYPO3 ExtBase - Erforderliches Argument X ist nicht gesetzt

rief ich die Aktion "Custom" und die Bezugnahme auf sie aus einer Taste, die ich mit Flüssigkeit machen in importr \ Resources \ Private \ Templates \ Importr \ Index.HTML unter Verwendung <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> 

Controller-Aktion:

/** 
* @param int $taskid 
* @return void 
*/ 
public function customAction($taskid) 
{ 
    ... 
} 

jedoch jeder Versuch, einen Parameter auf die Aktion nicht besteht. Bei meinem ersten Versuch erhalte ich sogar eine Fehlerseite, ohne auf den Button zu klicken, wie im Screenshot unten zu sehen ist.


Versuch # 1

/** 
* @param int $taskid 
* @return void 
*/ 
public function customAction($taskid) 
{ 
    print_r($taskid); 
    die; 
} 

Uncaught TYPO3 Exception

1298012500: Erforderliches Argument "taskid" für hdnet \ Importr \ Controllers \ ImportrController-> Brauch nicht gesetzt.

TYPO3 \ CMS \ Extbase \ Mvc \ Controllers \ Exception \ RequiredArgumentMissingException in Datei geworfen /var/www/typo3/typo3_src-6.2.25/typo3/sysext/extbase/Classes/Mvc/Controller/AbstractController.php in Zeile 425. '

importer


Versuch # 2

/** 
* @return void 
*/ 
public function customAction() 
{   
    $taskid = "default"; 

    if ($this->request->hasArgument('taskid')) { 
     $taskid = $this->request->getArgument('taskid'); 
    } 

    echo "TASKID = '$taskid'"; 
    die; 
    ... 

OUTPUT: TASKID = 'default'


Versuch # 3:

/** 
    * @return void 
*/ 
public function customAction() 
{ 
     $args = $this->request->getArguments(); 
     $taskid = $args['taskid']; 

     echo "TASKID = '$taskid'"; 
     die; 

OUTPUT: TASKID = ''

Ich weiß nicht, was kann ich sonst noch versuchen. Ist es möglich, dass ich im Fluid Code einen Fehler gemacht habe? Benutzt ich einen falschen pluginName oder extensionName oder ist es sogar ein typo3 Bug? Wo ist der pluginName gespeichert, damit ich es überprüfen kann?



Mehr Infos

ich meine benutzerdefinierte Aktion erlaubt, indem sie es auf die anderen Aktionen innerhalb 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' 
]); 

Antwort

2

Zugabe gab es zwei Probleme:

1 . ext_t ables.php

Die Reihenfolge der Aktionen war nicht korrekt. Die erste Aktion ist immer die Standardaktion, daher hat sie meine benutzerdefinierte Aktion als Standardaktion verwendet und daher wurde nach dem Klicken auf das Importmodul im linken Menü keine Seite geladen. Es hat funktioniert, nachdem ich es korrigiert habe.

'Importr' => 'index,import,preview,create,custom', 

2. Flüssigkeit

Die plugin falsch war, die richtige plugin ist file_importrtximportrmod, die wir in ext_tables.php sehen

ist es nicht einmal erforderlich, es funktioniert auch, wenn Sie pluginName und extensionName auslassen.

Stellen Sie sicher, dass Sie den Cache im Installationsprogramm danach löschen.

+0

wenn das die lösung ist, flag sie als one, thx;) –

+0

kann ich noch nicht, weil du erst ein paar tage warten musst nachdem du deine eigene antwort annehmen kannst.:P kann ich in 2 tage annehmen. – Black

Verwandte Themen