簡體   English   中英

javascript中找不到樹枝變量

[英]twig variable not found in javascript

我正在嘗試將細枝數組變量傳遞給javascript,但是由於某種原因,它一直在聲明該變量不存在。

我的樹枝:

{% set clients = [] %}
{% for work in works %}

    {% set clients = clients|merge([ work.name ]) %}

{% endfor %}

{% set client_array = clients|json_encode|raw  %}

當我嘗試使用{{client_array}}調用客戶端數組時,我沒有遇到任何麻煩,它將返回正確的數組。

但是我的問題是,當我嘗試在頁面上的javascript塊下面定義一個javascript變量,使其等於client_array時。

<script>
var clients = '{{ client_array }}';
...
 </script>

我不斷

變量“ client_array”不存在。

我覺得我在這里犯了一些愚蠢的語法錯誤。 誰能看到這個問題?

好的,所以我采取了另一種方法,選擇在控制器中設置變量

    $clients = [];
    foreach ($works as $work) {
        $client = $work['name'];
        array_push($clients, $client);
    }

並排比較輸出時,它們是相同的,因此我的結論是,似乎在樹枝外似乎看不到樹枝“設置”變量。 (不要在此引用我)

嘗試將信息從Twig傳遞到JavaScript

在控制器中創建變量:

public function index(Request $request) {

    /* ... */
    $clients = array(array("id" => 1, "name" => "test1"), array("id" => 2, "name" => "test2"));
    $names = array_map(function ($ar) {
        return $ar['name'];
    }, $clients);
    $twigparms = array("clients" => $names);
    return $this->render("YourTemplate/index.html.twig", $twigparms);
}

在樹枝上使用它

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
        <title>Page Title</title>
    <body>

        <div class="clients" id="clients" data-names="{{ clients|json_encode|e('html_attr') }}"></div>
        <script>
            document.addEventListener('DOMContentLoaded', function () {
                var clientstmp = document.querySelector('.clients');
                var clients = clientstmp.dataset.names;
                console.log(clients);
            });
        </script>

    </body>
</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM