TYPO3 VHS if Viewhelper Beispiel

Der Fluid „if“ Viewhelper erfüllt in den meisten Fällen seinen Zweck, allerdings kommt es auch hin und wieder vor, dass man im Template mehrere Bedingungen gleichzeitig abfragen möchte. Für diese Anwendungsfälle kann man den if-Viewhelper der VHS Extension nutzen:

Das folgende Beispiel zeigt wie man zwei Variablen auf ihren Inhalt prüfen kann. Dem Argument „stack“ übergibt man ein array bestehend aus der Bedingung. In diesem Beispiel wird überprüft ob in dem News-Eintrag Links oder Downloads hinterlegt sind.

Einen komplexeren Anwendungsfall wird im folgenden Beispiel beschrieben.

In diesem Beispiel setzt sich der „Bedingungs-Stack“ aus mehren Vergleichen zusammen.

Folgende Vergleiche und Verknüpfungen lassen sich mit dem Viewhelper umsetzen:

‚==‘
‚!=‘
‚>=‘
‚<=‘
‚<‚;
‚>‘

‚AND‘
‚OR‘
‚&&‘
‚||‘

File resource URIs in FLUID unter TYPO3 6.x erzeugen (FAL)

Mit der Einführung von FAL hat sich auch das erstellen von Datei Resource Pfaden in FLUID Templates etwas verändert.

Mittels Image-ViewHelper läßt über das Attribut „treatIdAsReference“ einstellen, dass es sich um eine FAL-Datei-Referenz handelt:

Inline Syntax:
{f:uri.image(src:file,treatIdAsReference:1)}

Tag based Syntax:
<f:uri.image src=“{file}“ treatIdAsReference=“1″ />

Das Interessante:
Diese Methode funktoniert nicht nur für Bilder, sondern für alle Datei-Typen, die man z.B. als Download-Link anbieten möchte.

Ein weiterer Punkt der sich im Zuge der Recherche ergeben hat ist, dass man im „f:link.page“-ViewHelper im Attribut „pageUid“ nicht nur Seiten-IDs übergeben kann, sondern alle Werte, die auch der Typolink-Builder als Parameter entgegen nimmt.
Dadurch ist es möglich z.B. einen Datei-Download-Link in FLUID / FAL zu erzeugen:

<f:link.page pageUid=“{f:uri.image(src:file,treatIdAsReference:1)}“ target=“_blank“ />

Dieser wird dann auch durch den Typolink-Builder erzeugt, was den Vorteil hat, dass z.B. Extensions die sich dort einklinken funktionieren, z.B. um die Downloads abzusichern oder sprechende Links zu erzeugen.

Weitere Info: ImageViewhelper Referenz auf fedext.net

ValidationError in Extbase Controller erzeugen

CONTROLLER:

if(!$newBooking->isAgb()) {
$error = t3lib_div::makeInstance('Tx_Extbase_MVC_Controller_ArgumentError', 'agb');

$error->addErrors(array(t3lib_div::makeInstance('Tx_Extbase_Validation_Error',
'Bitte akzeptieren Sie vor dem Absenden des Formulars unsere AGB.',
'1336135123')));

$this->request->setErrors(array($error));
#$referrer = $this->request->getArgument('__referrer');

$this->forward('show','Event','limeseminars', $this->request->getArguments());
}

FLUID:


<fieldset class="clearfix">
<p class="error">
<f:if condition="{0:error.propertyName} == {0:'agb'}">
<f:then>
<f:for each="{error.errors}" as="errorDetail">
<f:format.html parseFuncTSPath="lib.parseFunc">{errorDetail.message}</f:format.html>
</f:for>
</f:then>
<f:else>
Bitte füllen Sie die markierten Pflichtfelder aus.
</f:else>
</f:if>
</p>
</fieldset>

Array mit Objekten anhand einer Objekt-Eigenschaft sortieren

Hier ist diese Funktion hilfreich:

Extbase: Fluid zum rendern von E-Mail-Templates

http://forge.typo3.org/projects/typo3v4-mvc/wiki/How_to_use_the_Fluid_Standalone_view_to_render_template_based_emails

 

Abschrfit des Codes:

Fehlermeldung in TYPO3 / Extbase: The value must be of type „Tx_*“, but was of type „NULL“.

Beim entwickeln mit Extbase für TYPO3 geschieht häufiger, dass man eine Fehlermeldung erhält, die folgt aussieht:

„The value must be of type „Tx_*“, but was of type „NULL“.
(* steht für den Extension_Modelname)

Hier sollte als erstes geprüft werden, ob im Model alle getter- und setter-Methoden implementiert sind, und bei ObjectStorages (also 1:n Relations), zusätzlich die add & removes. Hier nicht vergessen dass die get- und set- Methoden sich auf den Plural beziehen: z.b: getMembers und setMembers (also mit s am Ende).