Extbase/Fluid ViewHelper für TCA Tabellen-Wizard (tablewizard) in eigener Extension nutzen

Mittwoch, 02. September 2015

Problem: Man möchte in einer eigenen Extension den Tabellen-Wizard für ein TCA-Feld nutzen und diese dann per css_styled_content in einem Fluid-Template ausgeben lassen. Leider konnte ich keinen ViewHelper dafür finden und auch die ersten Verdächtigen z.B. über so etwas wie f:format.html parseFuncTSPath =”tt_content.table.20″ scheiterten.

Für Suchmaschinen: tca tablewizard viewhelper für tabellen. Eigener ViewHelper für tablewizard Daten Typo3. Parse tablewizard data in fluid template. tablewizard String in Tabelle konvertieren in eigener Extension. Tabellendaten in Typo3 Fluid ViewHelper umwandeln. Konvertieren von Daten aus dem Tabellen-Assistenten für Typo3. tablewizard in eigener Extension nutzen und in Fluid per css_styled_content parsen lassen.

Table-Wizard im TCA nutzen
Dazu nutzt man im TCA das Script wizard_table.php:

'tabellen_daten_feld' => array(
   'label' => 'Lebenslauf',
   'l10n_mode' => 'mergeIfNotBlank',
   'config' => array (
      'type' => 'text',
      'cols' => '30',   
      'rows' => '5',
      'default' => '',
      'wizards' => array(
         '_PADDING' => 2,
         'list' => Array(
            'notNewRecords' => 1, 
            'type' => 'script',
            'title' => 'Table wizard',
            'icon' => 'wizard_table.gif',
            'script' => 'wizard_table.php',
            // So kann die Option "kleine Felder" automatisch deaktiviert werden
            // 'script' => 'wizard_table.php?TABLE[textFields]=0',
            'params' => array(
               'xmlOutput' => 0
            )
         ),
      ),
   ),
),

ViewHelper für das Rendern der Tabelle
Der ViewHelper nutzt css_styled_content um die per Zeilenumbruch und mit dem Pipe-Symbol (|) getrennte Spalten und Zeilen in eine Tabelle umzuwandeln.

<?php
 
namespace Pfad\ZuDeinen\ViewHelpers;
 
 
class TableViewHelper extends \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper {
 
   /**
   * @var \TYPO3\CMS\CssStyledContent\Controller\CssStyledContentController
   * @inject
   */
   protected $cscController;
 
   /**
    * @var \TYPO3\CMS\Extbase\Configuration\ConfigurationManager
    * @inject
    */
   protected $configurationManager;
 
   /**
    * Arguments Initialization
    */
 
   public function initializeArguments() {
      $this->registerArgument('table', 'string', 'Die Tabellen-Daten, Delimiter ist das Pipe-Symbol', false, null);
      $this->registerArgument('layout', 'string', 'Die Zahl, die an der Klasse contenttable-XX erscheint', false, null);
   }
 
    /**
     * Rendert die Tabelle mit csc_styled_content
     */
 
    public function render() {
 
      if (!$this->arguments['table']) {
         $this->arguments['table'] = html_entity_decode($this->renderChildren());
      }
 
      $this->cscController->cObj = $this->configurationManager->getContentObject();
      $this->cscController->cObj->data = $this->arguments;
 
      return $this->cscController->render_table( null, array('field'=>'table') );
 
 
    }
}
?>

Der ViewHelper kann so eingesetzt werden:
Dabei kann unter “layout” eine Zahl angegeben werden, die bei an der Tabelle als z.B. class=”contenttable-2″ erscheint.

{namespace VH=Pfad\ZuDeinen\ViewHelpers}
 
<VH:table layout="2">{tabellen_daten_feld}</VH:table>
 
<VH:table layout="2" table="{tabellen_daten_feld}" />
 
{VH:table(layout:2,table:tabellen_daten_feld)}