Zum Inhalt springen

Eigenen ViewHelper für Fluidtemplate Objekt

Erstellt am 12. Juli 2011 · 2 Antworten · letzte Antwort am 23. Februar 2012

Tags: Frage

Rozbeh.​Sharahi ·

Hallo Allerseits,

ich verusche gerade bei einem neuen Projekt mittels Fluid die Templates umzusetzen um erstmal etwas in diese neue Flow3 Welt hineinzukommen.

Hierfür verwende ich das FLUIDTEMPLATE Objekt um zu starten, damit ich erstmal ohne ExtBase die Stärken von Fluid austesten kann.

Weiters wollte ich nun einen eigenen ViewHelper für mein Projekt erstellen.

Meine Ext heißt: tdj
Im Ext/tdj Ordner habe ich einen Ordner Classes angelegt.
Dadrin ist nun ein Ordner ViewHelpers
Hierdrin ist wiederum eine Datei LoremIpsumViewHelper.php

Diese sieht so aus:

/**
 * This class is a demo view helper for the Fluid templating engine.
 *
 * @package TYPO3
 * @subpackage Fluid
 * @version
 */
class Tx_Tdj_ViewHelpers_LoremIpsumViewHelper extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {

    /**
     * Renders some classic dummy content: Lorem Ipsum...
     *
     * @param int $lenght The number of characters of the dummy content
     * @return string dummy content, cropped after the given number of characters
     * @author Lorem Ipsum <lorem@example.com>
     */
    public function render($lenght) {
        $dummyContent = 'Lorem ipsum dolor sit amet.';
        return substr($dummyContent, 0, $lenght);
    }
}

Im HTML/Fluid Template hab ich nun folgendes ganz Oben eingetragen:

{namespace tdj=Tx_Tdj_ViewHelpers}

und im Code will ich nun folgendes ausführen:

<tdj:loremIpsum length="10" />

Wenn ich das aber mache bekomme ich folgende Fehlermeldung:

Could not analyse class:Tx_Tdj_ViewHelpers_LoremIpsumViewHelper maybe not loaded or no autoloader?

Kann es sein, dass ich beim FLUIDTEMPLATE keine eigenen ViewHelper benutzen kann?

Ich habe keinen ext_autoloader.php oder sonstwas angelegt. Ist das vielleicht das Problem?

Hoffe ich konnte mein Problem ausführlich genung beschreiben und irgendwer da draußen kann mir weiterhelfen.

Liebe Grüße
Robert

Rozbeh.​Sharahi ·

Hallo liebe Leute,

habs selber lösen können. Ich hätte in meiner Extension eine Datei ext_autoload.php erstellen müssen, welche meine Klasse innerhalb eines Arrays zurückgibt:

So muss das aussehen:

$extensionClassesPath = t3lib_extMgm::extPath('tdj') . 'Classes/';
return array(
	'tx_tdj_viewhelpers_loremipsumviewhelper' => $extensionClassesPath . 'ViewHelpers/LoremIpsumViewHelper.php',
);

Dann funktioniert das auch ohne Extbase. Ich glaube wenn man Extbase verwendet und seine Extension irgendwie registriert, wäre diese Datei selber erstellt worden.

Vielleicht konnte ich ja wem damit helfen. Kann jedenfalls jedem Fluid empfehlen, ist wirklich eine Revolution.

Liebe Grüße aus Wien,
Rozbeh Chiryai Sharahi (Robert)

jakber ·

Fein, werde das dann auch so machen aber interessant ist: Ich habe die Extension auf einem System entwickelt. Mit ExtensionBuilder als Basis. Dort läuft sie ohne Probleme. Auf dem Zielsystem als T3X installiert und dort kommt die besagte Fehlermeldung. Auf dem Zielsystem ist die Extension "ExtensionBuilder" nicht installiert. Kann es u.U. sein, dass diese quasi alle selbst erstellten Extension in einen eigenen Autoloader integriert?! Wäre freakig/schlecht aber scheint ja so zu sein...