[英]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);
}
並排比較輸出時,它們是相同的,因此我的結論是,似乎在樹枝外似乎看不到樹枝“設置”變量。 (不要在此引用我)
在控制器中創建變量:
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.