Symfony4 «ОШИБКА: переменная не существует», когда я вызываю переменную в своем шаблоне - PullRequest
0 голосов
/ 23 января 2020

Я заблокирован по ошибке с Symfony 4.3.

Я установил комплект: CMENGoogleChartsBundle

Установка в порядке, ошибок нет.

Итак, я хотел попробуйте, у меня есть новый контроллер "TestChartController" и новый шаблон "testChart / index. html .twig".

У меня есть код учебника: https://github.com/cmen/CMENGoogleChartsBundle/blob/master/Resources/doc/basic_usage.md

Дело 1.

Вот что у меня в IDE:

Контроллер

namespace App\Controller;

use CMEN\GoogleChartsBundle\GoogleCharts\Charts\PieChart;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Twig\Environment;

class TestChartController extends AbstractController
{


    /**
     * @var Environment
     **/
    private $twig;

    public function __construct(Environment $twig)
    {
        $this->twig = $twig;
    }

    /**
     * @Route("/test/chart", name="testChart")
     */
    public function index()
    {
        return $this->render('testChart/index.html.twig', [
            'controller_name' => 'TestChartController',
        ]);
    }

    public function indexAction()
    {
        $pieChart = new PieChart();
        $pieChart->getData()->setArrayToDataTable(
            [['Task', 'Hours per Day'],
                ['Work',     11],
                ['Eat',      2],
                ['Commute',  2],
                ['Watch TV', 2],
                ['Sleep',    7]
            ]
        );
        $pieChart->getOptions()->setTitle('My Daily Activities');
        $pieChart->getOptions()->setHeight(500);
        $pieChart->getOptions()->setWidth(900);
        $pieChart->getOptions()->getTitleTextStyle()->setBold(true);
        $pieChart->getOptions()->getTitleTextStyle()->setColor('#009900');
        $pieChart->getOptions()->getTitleTextStyle()->setItalic(true);
        $pieChart->getOptions()->getTitleTextStyle()->setFontName('Arial');
        $pieChart->getOptions()->getTitleTextStyle()->setFontSize(20);

        return $this->render('testChart/index.html.twig', ['piechart' => $pieChart]);
    }
}

Шаблон :

{% extends 'base.html.twig' %}



{% block title %}Hello TestChartController !{% endblock %}

    {% block body %}
        <!-- index.html.twig -->
        <html>
        <head></head>
        <body>
        <div id="div_chart"></div>
        <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
        <script type="text/javascript">
            {{ gc_draw(piechart, 'div_chart') }}
        </script>
        </body>
        </html>
    {% endblock %}

Но Symfony ответ с фатальной ошибкой:

Ошибка IMG

Я пробовал с простой строкой в моем контроллере:

$test = 'test' И я изменил рендер:

return $this->render('testChart/index.html.twig', ['test' => $test]);

Наконец-то у меня dump(test) в моем шаблоне.

Та же ошибка.

Примечание: все остальные шаблоны работают правильно.

Спасибо за вашу будущую помощь.

РАЗРЕШЕНИЕ: Переместите это на вторую функцию indexAction * Действие

/**
     * @Route("/test/chart", name="testChart")
     */

Symfony 4.3.2

W1 0

1 Ответ

0 голосов
/ 23 января 2020

Попробуйте использовать этот контроллер.

namespace App\Controller;

use CMEN\GoogleChartsBundle\GoogleCharts\Charts\PieChart;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Twig\Environment;

class TestChartController extends AbstractController
{


    /**
     * @var Environment
     **/
    private $twig;

    public function __construct(Environment $twig)
    {
        $this->twig = $twig;
    }

    /**
     * @Route("/test/chart", name="testChart")
     */
    public function index()
    {
        $pieChart = new PieChart();
        $pieChart->getData()->setArrayToDataTable(
            [['Task', 'Hours per Day'],
                ['Work',     11],
                ['Eat',      2],
                ['Commute',  2],
                ['Watch TV', 2],
                ['Sleep',    7]
            ]
        );
        $pieChart->getOptions()->setTitle('My Daily Activities');
        $pieChart->getOptions()->setHeight(500);
        $pieChart->getOptions()->setWidth(900);
        $pieChart->getOptions()->getTitleTextStyle()->setBold(true);
        $pieChart->getOptions()->getTitleTextStyle()->setColor('#009900');
        $pieChart->getOptions()->getTitleTextStyle()->setItalic(true);
        $pieChart->getOptions()->getTitleTextStyle()->setFontName('Arial');
        $pieChart->getOptions()->getTitleTextStyle()->setFontSize(20);

        return $this->render(
            'testChart/index.html.twig', [
                'piechart' => $pieChart
            ]
        );
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...