Шаблон Twig обращается к старому значению переменной в Symfony 3.4 - PullRequest
0 голосов
/ 14 ноября 2018

Я борюсь с проблемой в Symfony 3.4, связанной с Twig. По сути, у меня есть две переменные, и я хочу использовать их в качестве значений для javascript в шаблоне. Эти две переменные ($selected_tipoopera и $selected_year) можно изменить с помощью формы, которая управляется тем же контроллером, который отображает шаблон.

Код контроллера выглядит следующим образом:

    $selected_tipo_opera = "S"; // the default value
    $selected_year = ""; // the default value

    // other stuff / code (form creation and management of form events)

    $form_operas_type_and_year->handleRequest($request);

    if($form_operas_type_and_year->isSubmitted() && $form_operas_type_and_year->isValid()){
        $selected_tipo_opera = $form_operas_type_and_year->getData()["operas_type"];
        $selected_year = $form_operas_type_and_year->getData()["year"];
    }


    // fetch data based on $selected_tipo_opera and $selected_year

    return $this->render('frontend/opere.html.twig', 
        array(
            "opere" => $opere,
            "form_operas_type_and_year" => $form_operas_type_and_year->createView(),
            "selected_tipoopera" => $selected_tipo_opera,
            "selected_year" => $selected_year
        ));

Странно то, что контроллер отслеживает изменение значений двух переменных, тогда как шаблон ветки всегда печатает "S" и "" для $selected_tipoopera и $selected_year.

Что я делаю не так? Это что-то связано с формой?

Заранее благодарим за любые предложения.

UPDATE

<script type="text/javascript">
    var year = "{{ selected_year }}";
    var stp = "{{ selected_tipoopera }}";
</script>

1 Ответ

0 голосов
/ 16 ноября 2018

Вот кое-что, что может помочь.Справочная информация: на главной странице сайта отображается диаграмма, созданная с помощью highcharts , генератора диаграмм javascript.Поскольку диаграмме нужны значения из базы данных, мне нужно было создать шаблон Twig, который можно было бы использовать в качестве javascript.

Ключи: ...js.twig файл, содержащий javascript, действие контроллера для рендеринга (не renderView) шаблона, и render(controller(...)) на страницах, где требуется скрипт для вставки скрипта.

Итак, у меня есть:

script.js.twig

$(document).ready(function () {
    var options = {
        chart: {
            type: 'line'
        },
        title: {
            text: 'Distributions, FY{{ chart.fy }} to date'
        },
        xAxis: {
            categories: [{% for category in chart.categories %}{{category|raw}}{%endfor%}]
        },
        yAxis: {
            title: {
                text: 'Distributions'
            }
        },
        series: {{ chart.series|raw }}
    };

    $('#linechart').highcharts(options);
})

И в index.html.twig "

<script type="text/javascript">
    {{ render(controller('AppBundle:Default:script')) }}
</script>

и в../Controller/Default/script

public function scriptAction(FYChart $fiscalYearChart)
{
    $chart = $fiscalYearChart->getDistsFYToDate();

    return $this->render('Default/script.js.twig', array(
                'chart' => $chart,
    ));
}
...