Js und Css im Controller per pageRenderer

  • creativeworkx creativew...
    TYPO3-Anwärter
    0 x
    5 Beiträge
    0 Hilfreiche Beiträge
    29. 03. 2012, 18:01

    Hallo,

    ich habe folgende Situation: Ich möchte per $GLOBALS['TSFE']->getPageRenderer() eine JS Footer Library einbinden.
    Ich befinde mich in einer Action eines Controllers (natürlich extbase basierend).

    Dazu rufe ich folgende Funktion auf:

    1. $GLOBALS['TSFE']->getPageRenderer()->addJsFooterLibrary('some_random_string', 'https://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js', 'text/javascript', FALSE, FALSE, '', TRUE);

    Die Signatur der Methode habe ich der class.t3lib_pagerenderer.php entnommen

    1. public function addJsFooterLibrary($name, $file, $type = 'text/javascript', $compress = FALSE, $forceOnTop = FALSE, $allWrap = '', $excludeFromConcatenation = FALSE)

    Das funktioniert nicht. Ich erhalte keine Fehlermeldung aber die jQuery Einbindung erscheint auch nicht im Frontend.

    Ich habe weiters dann versucht eine lokal vorhande Datei über den gleichen Weg einzubinden:

    1. $GLOBALS['TSFE']->getPageRenderer()->addJsFooterLibrary('some_random_string', ''.t3lib_extMgm::siteRelPath($this->request->getControllerExtensionKey()) . 'Resources/Public/Js/jquery.tablesorter.min.js', 'text/javascript', FALSE, FALSE, '', TRUE);

    Auch das funktioniert nicht. Es erscheint einfach nichts im Frontend.

    Caches habe ich gelöscht.

    Per Typoscript eine JsFooterLib hinzufügen funktioniert problemlos, nur die Einbindung im Controller (die ich für mein Szenario benötige) funktioniert leider überhaupt nicht.

    PS: Ich habe bereits kurz die class.t3lib_pagerenderer.php debugged. Der Eintrag wird angelegt, vor dem rendern wird jedoch die jsLibs wieder geleert scheinbar.

    Hat wer von euch eine Idee?


  • 1
  • creativeworkx creativew...
    TYPO3-Anwärter
    0 x
    5 Beiträge
    0 Hilfreiche Beiträge
    29. 03. 2012, 18:04

    Ich habe folgendes [url=http://www.thefox.ch/php/code-schnipsel/typo3/t3lib-pagerenderer-addjs-beispiele/]Tutorial[/url] 1:1 kopiert und eingefügt in meinen Controller.
    Das Ergebnis ist gleich negativ leider.

  • creativeworkx creativew...
    TYPO3-Anwärter
    0 x
    5 Beiträge
    0 Hilfreiche Beiträge
    29. 03. 2012, 20:01

    So ... Problem gelöst. 8-)
    Ich schreibe es hier rein, vielleicht erspart es euch ja auch einiges an Debugzeit.

    Hier nochmals der Aufruf

    1. $GLOBALS['TSFE']->getPageRenderer()->addJsFooterLibrary('some_random_string', 'https://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js', 'text/javascript', FALSE, FALSE, '', TRUE);

    [i](Sauberer ist es die pageRenderer Klasse per DI in den Controller zu injecten und mit dieser dann zu arbeiten)[/i]

    Der Aufruf ist richtig. Er funktioniert jedoch [b]nicht[/b], wenn die Controller/Action Kombination [b]USER_INT[/b] ist

    Ob die Controller/Action Kombination USER oder USER_INT ist, wird in der [b]ext_localconf.php der Erweiterung[/b] eingestellt.

    1. Tx_Extbase_Utility_Extension::configurePlugin(
    2. $_EXTKEY, // The extension name (in UpperCamelCase) or the extension key (in lower_underscore)
    3. 'Pi1', // A unique name of the plugin in UpperCamelCase
    4. array( // An array holding the controller-action-combinations that are accessible
    5. 'Controller' => 'index', // The first controller and its first action will be the default
    6. ),
    7. array( // An array of non-cachable controller-action-combinations (they must already be enabled)
    8. 'Controller' => 'index', // wenn hier 'Controller' => 'index' entfernt wird, dann ist die Controller/Action Kombination vom Typ USER und der Aufruf funktioniert und das Js wird hinzugefügt.
    9. )
    10. );

  • jank jank
    Sternenflotten-Admiral
    0 x
    158 Beiträge
    0 Hilfreiche Beiträge
    30. 03. 2012, 12:33

    Danke für den Tip!!! habe das gleich mal verwendet um noch die js einer extension nur in eriner Action zu laden:

    1. $GLOBALS['TSFE']->getPageRenderer()->addJsFooterFile(t3lib_extMgm::siteRelPath('ext_key'). 'Resources/Public/JavaScript/ext-jquery-plugin.js');

  • qualle85 qualle85
    R2-D2
    0 x
    63 Beiträge
    0 Hilfreiche Beiträge
    21. 02. 2013, 15:13

    Top Tip, Danke!

  • 1