ViewHelper Aufrufe

es gibt drei Varianten einen ViewHelper aufzurufen:

 

als Tag:

<f:vhname par="123">{some.value}</f:vhname>

 

inline mit Parametern (hierbei muss man wissen mit welchem Parameter-Namen die Daten erwartet werden):

{f:vhname(par:'123',data:{some.value})}

 

inline in Objekt-Notation:

{some.value -> f.vhname(par:123)}

 

 

 

<f:if condition="some.value == 123">die variable some.value hat den Wert {some.value}</f:if>

{f:if(condition:'{some.value}==123', then:'die variable some.value hat den Wert {some.value}')}

{'die variable some.value hat den Wert {some.value}'->f.if(condition:'{some.value}==123')}

 

 

 

eigene Viewhelper kann man auf (mind.?) zwei Arten erstellen:

 

 

1. mit Typoscript

(eigentlich kein richtiger Viewhelper)

wir benutzen den cObject-Viewhelper und verbinden ihn mit einem eigenen Typoscript:

<f:cObject typoscriptObjectPath="lib.myviewhelper">zu modifizierende Daten<f:cObject>

und das zugehörige Typoscript:

lib.myviewhelper = TEXT
lib.myviewhelper {
    current = 1
    case = upper
    wrap = <span style="color:red;">|</span>
}

Vorteile: schnell erstellt, volle Funktionalität von Typoscript

 

man kan sogar mehrere Werte an das Typoscript übergeben:

<f:cObject typoscriptObjectPath="lib.arraytest" data="{a:'abc',b:'xyz'}" >inside text</f:cObject>
lib.arraytest = COA
lib.arraytest {
  10 = TEXT
  10.field = a
  10.wrap = /|/

  20 = TEXT
  20.field = b
  20.wrap = \|\
}

ergibt dann:

/abc/\xyz\

Beachte: der innere Teil des f:cObject-Tags geht verloren.

 

 

2. mit einer eigenen Extension

Die Extension muss nicht viele Dateien beinhalten. In der einfachsten Version reicht diese Struktur:

 

my_extension
 +-Classes
 | +-ViewHelpers
 |   +-modifyViewHelper.php
 +-ext_emconf.php
 +-ext_icon.gif

 

ext_emconf.php und ext_icon.gif benötigt man um die Extension überhaupt zu verwalten.

Die eigentliche Funktionalität liegt natürlich in modifyViewhelper.php:

 

<?php
/*                                                                        *
 * This script belongs to the TYPO3 package "my_extension".               *
 *                                                                        *
 * It is free software; you can redistribute it and/or modify it under    *
 * the terms of the GNU Lesser General Public License as published by the *
 * Free Software Foundation, either version 3 of the License, or (at your *
 * option) any later version.                                             *
 *                                                                        *
 * This script is distributed in the hope that it will be useful, but     *
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN-    *
 * TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser       *
 * General Public License for more details.                               *
 *                                                                        *
 * You should have received a copy of the GNU Lesser General Public       *
 * License along with the script.                                         *
 * If not, see http://www.gnu.org/licenses/lgpl.html                      *
 *                                                                        *
 * The TYPO3 project - inspiring people to share!                         *
* */ namespace VENDOR\MyExtension\Viewhelpers use \TYPO3\CMS\Fluid\Core\ViewHelper\AbstractViewHelper; /** * @package my_extension * @subpackage ViewHelpers * @author Name */ class ModifyViewHelper extends AbstractViewHelper { class Tx_myExtension_ViewHelpers_ModifyViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper { /** * Modifies the given data * * @param string $myText The Text to modify * @param string $header * @param string $crop * @return string The modified string * @api */ public function render( $myText = null, $header = NULL, $crop = NULL ) { if( $myText === null ) $myText = $this->renderChildren(); $retval = ''; if ($header) $retval .= '<h2>'.$header.'</h2>'; $retval .= '<p>'; if ($crop) $retval .= substr($myText,0,$crop); else { $retval .= $myText; } $retval .= '</p>'; return $retval; } } ?>

 

Der Aufruf im Fluid-Template erfolgt dann so:

 

{namespace m=Tx_myExtension_ViewHelpers}
{namespace m=VENDOR\MyExtension\ViewHelpers}
<m:modify header="test" crop="20">ein etwas längerer Text zum Testen ob alles funktioniert</m:modify>
 
Ihre aktuelle Seitenauswahl:  
>>>