TYPO3 extbase - current variable for jquery

How to pass fluid variable from controller to jQuery or javascript?

Inside my controller:

public function tabs () {
    $this->view->assign('tab', 1);
}

Inside the fluid, I would use a variable like {tab} But how can I go to JavaScript? Any help would be appreciated ...

+1
source share
5 answers

JS in fluid template behavior ... in most cases, it's terrible if your JS code contains any curly braces, you need to include an external script instead of placing the script in the view.

The reason is because Fluid thinks that all curly braces belong to its volume, so when you write:

$('#mySelectBox').change(function() {
    // functions body code
    // next line
    // next line
});

Fluid destroys JS and displays it as simply:

$('#mySelectBox').change(function() Array);

Then most often I use something like this:

in view:

<script>var TxMyExtKeyTabNumber = {tab}</script>
<script src="path/to/static/script.js"></script>

in script.js:

$("#container").val(TxMyExtKeyTabNumber);
+3

Fluid, f: CDATA ( Fluid).

    <script type="text/javascript"><![CDATA[
            function initialize() {
                    var marker = [];
                    var LatLng;
                    var queryLatlng = new google.maps.LatLng(]]>{queryLat}, {queryLng}<![CDATA[);
                    var mapOptions = {
                            center: queryLatlng,
                            zoom: 8,
                            mapTypeId: google.maps.MapTypeId.ROADMAP
                    };
                    var map = new google.maps.Map(document.getElementById("tx_gmapplus-map"),mapOptions);

                    marker['0'] = new google.maps.Marker({
                            position: queryLatlng,
                            map: map,
                            title: "Standort"
                    });
                    ]]><f:for each="{addresses}" as="address" iteration="it"><![CDATA[
                            latlng = new google.maps.LatLng(]]>{address.txGmapplusLatitude}, {address.txGmapplusLongitude}<![CDATA[);
                            ]]>marker['{it.cycle}']<![CDATA[ = new google.maps.Marker({
                                    position: latlng,
                                    map: map,
                                    title: ]]>"{address.name}"<![CDATA[
                            });
                            ]]></f:for><![CDATA[
            }
]]></script>

, , Fluid.

+5

. , Fluid - :

<div data-tab="{tab}"></div>

JavaScript :

jQuery('div').data('tab');

, HTML-.

+4

( , CDATA), javaScript.   {} , , . .

, ...

<script>
   var myGlobal = {fluidVar};
   function myFunc(){
      var myLocal = <f:format.raw>{fluidVar2}</f:format.raw>
      var myLocal2 = <f:if condition="1">{fluidVar3}</f:if>
   }
</script>
0

- , {settings.mySettingName} TypoScript ,

function getHiddenSettings(className) {
    var settings = {};
    $.each($(className), function (index, input) {
        if (input.dataset.type === "integer") {
            settings[input.name] = parseInt(input.value) || 0;
        } else if (input.dataset.type === "boolean") {
            settings[input.name] = !!(parseInt(input.value) || input.value === "true")
        } else if (input.dataset.type === "string") {
            settings[input.name] = input.value;
        }
    });
    return settings;
}

var settings = getHiddenSettings(".mySettings");

$('pre').html(JSON.stringify(settings, null, 2));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<input type="hidden" class="mySettings" name="closedTimes" value="0" data-type="integer">
<input type="hidden" class="mySettings" name="onlyEmail" value="false" data-type="boolean">
<input type="hidden" class="mySettings" name="serverError" value="Server problem" data-type="string">
    
<pre></pre>
Hide result
0
source

All Articles