[TYPO3-mvc] Loading JS files in Extbase plugins: best practice?

Sebastian Schreiber me at schreibersebastian.de
Tue Mar 29 11:31:06 CEST 2011


Am 29.03.2011 11:28, schrieb Sebastian Schreiber:
> Am 29.03.2011 11:08, schrieb François Suter:
>> Hi,
>>
>>> Next question: I need to load this JS file only for some actions, not
>>> for all them. For example, I placed my code in the newAction() method.
>>> This works fine. But when I submit the data and have one or more
>>> validation errors, the create action redirects to the new action. 
>>> And in
>>> this case, my JS file is not loaded. I'm assuming that it's being 
>>> called
>>> too late and thus the JS file is not loaded, but I'm not sure. In 
>>> such a
>>> case where would be the right place to call up the loading of the JS 
>>> file?
>>
>> Still no luck. I tried to load my JS file from within 
>> initializeView() or initializeAction(), but no luck. As soon as 
>> there's an internal redirection (in this case from "create" action to 
>> "new" action, because there are validation errors), my JS file does 
>> not get loaded.
>>
>> Does anyone have an idea where I should place my loading call so that 
>> it doesn't get lost upon redirection?
>>
>> Cheers
>>
> Hi,
> i´m using special viewhelpers for that.
> I think it is better instead of loading the js files within the 
> controller.
>
> The viewhelpers are very simple.
> For example:
>
> class Tx_SschFluidExtbaseHelper_ViewHelpers_Meta_AddFooterJsViewHelper 
> extends Tx_Fluid_Core_ViewHelper_AbstractViewHelper {
>
>     /**
>      * renders a special title for the page
>      *
>      * @param string $title
>      * @return string $content: The pagebrowser
>      */
>     public function render($file = NULL) {
>
>         if ($file === NULL) {
>             $file = $this->renderChildren();
>         }
>         // Makes no sense to use the DPI here
>         $pageRenderer = t3lib_div::makeInstance('t3lib_PageRenderer'); 
> // it is a singleton, so we get always the same instance
>         /* @var $pageRenderer t3lib_PageRenderer */
>         $pageRenderer->addJsFooterFile($file);
>     }
> }
>
>
Or you can use the response object in a special viewhelper and call the
method addAdditionalHeaderData.

-- 
Sebastian Schreiber
(Medieninformatiker)
(TYPO3 Certified Integrator)

Sülzburgstraße 36
D-50937 Köln

T  0221 677 88 541
M  0176 431 05 790

Skype schreibersebastian.de

me at schreibersebastian.de
www.schreibersebastian.de

Steuernummer: 219 / 5302 / 2302



More information about the TYPO3-project-typo3v4mvc mailing list