Передайте переменную javascript в веточку form_widget FOSymfony - PullRequest
0 голосов
/ 28 июня 2019

Я хочу установить массив form_widget в ветке, используя некоторые переменные localStorage, которые я сохранил в переменных javacript.

Какой лучший способ сделать это?

Я попытался получить идентификатор поля ввода и установить значение с помощью jquery из js, но он не работает

<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 голосов
/ 29 июня 2019

Рендеринг веток выполняется / завершается (на стороне сервера), прежде чем 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...