将javascript变量传递到细枝form_widget FOSymfony

时间:2019-06-28 13:38:23

标签: javascript symfony twig local-storage

我想使用我保存在javacript变量中的一些localStorage变量在twig中设置form_widget数组。

哪种方法是最好的?

我尝试获取输入字段的ID并使用js中的jquery设置值,但是它不起作用

<div class="col-sm-3 year">
             {{ form_widget(form.birthdate.year, {'value': 'birthdate.year'}) }}
          </div>
<script>
   var birthdateJSON = localStorage.getItem('user_birthdate');
   var birthdate = JSON.parse(birthdateJSON);
</script>

1 个答案:

答案 0 :(得分:0)

在准备使用javascript(客户端)之前,已完成/完成(服务器端)树枝渲染。所以你不能回到过去。唯一的选择是使用javascript。

如果您的form_widget返回一个选择框:(我想是因为您所说的“数组”)

<div class="year">
    <select name="myselect" id="myselect">
        <option value="1980">1980</option>
        <option value="1981">1981</option>
        <option value="1982">1982</option>
        <option value="1983">1983</option>
    </select>
</div>

<script>
    var birthdateJSON = localStorage.getItem('user_birthdate');
    var birthdate = JSON.parse(birthdateJSON);
    var year = birthdate.year;

    // Be sure to pre-select it after document ready
    $(function() {
        // You can do this
        $('.year select option[value="' + year + '"]').attr('selected', 'selected');
        // Or this
        $('.year select').val(year);
    });
</script>

如果是文本字段

<div class="year">
    <input type="text" name="myselect" id="myselect">
</div>

<script>
    var birthdateJSON = localStorage.getItem('user_birthdate');
    var birthdate = JSON.parse(birthdateJSON);
    var year = birthdate.year;

    // Be sure to pre-fill it after document ready
    $(function() {
        // You can do this
        $('.year input').val(year);
    });
</script>