Intereting Posts
php curl получает отказ, когда работает версия командной строки Запуск нескольких cURL в фоновом режиме с помощью PHP Отправить сообщение json с помощью php nginx 502 плохой шлюз Как создать решение, ограничивающее хранение пользователей в приложении? Как сделать класс pagination в Codeigniter работать с AJAX? Подключение к серверу Apache с использованием SSH и PHP / MYSQL Переместить mediawiki TOC на боковую панель Как создать новое предупреждение Google, доставляющее его для подачи, используя PHP cURL Как вставить значение переключателя, которое имеет несколько имен радио в codeigniter? Улучшение эффективности скребка HTML с помощью pcntl_fork () Почему невозможно запустить исполняемый файл с функциями exec () или system ()? ssh2_exec () не изменяет каталог с "cd" PHP Хранить ключевое значение из ассоциативного массива в простой массив Как проверить, установлена ​​ли версия OpenSSL> = 0.9.8k

Функции формы Symfony 2 Twig недоступны

Я создаю новый объект Twig Environment внутри пользовательского класса, этот класс визуализируется из существующего файла twig. Я пытаюсь отобразить форму в моем файле twig, который отображается из моего пользовательского класса, однако в этой новой функции формы объекта Twig_Environment недоступны, я попытался добавить существующее расширение формы из собственного объекта twig symfony к моему новому объекту twig, это тоже не работает.

$path = 'some/directory'; // just simplifying here $loader = new \Twig_Loader_Filesystem( $path ); $twig = new \Twig_Environment($loader, array( 'cache' => __DIR__.'/../../../../../../app/cache/', )); $tmpl = $twig->loadTemplate('EmailUs.html.twig'); $twig->addExtension( new \Symfony\Bridge\Twig\Extension\FormExtension( $this->pageObj->getContainer()->get('twig.form.renderer') ) ); $response = new Response(); $response->setContent($tmpl); return $response; 

Ошибка, которую я получаю

«Функция« form_start »не существует в EmailUs.html.twig в строке 8"

Я использовал собственный объект twig для Symfony, чтобы отобразить ответ, но это дало мне ту же ошибку. Можете ли вы помочь PLS? Я использую Symfony 2.3.4

Функции формы доступны, если я визуализирую обычный контроллер, они не работают нормально, если я создаю пользовательский объект twig.

Я решил это так:

 $loader = $pageFunctions->getContainer()->get('twig.loader'); $loader->addPath( $path ); $twig = new \Twig_Environment($loader, array( 'cache' => __DIR__.'/../../../../../../app/cache/myTwig', )); foreach( $this->twig->getExtensions() as $ext ) { $twig->addExtension( $ext ); } $tmpl = $twig->loadTemplate('EmailUs.html.twig'); $rendered = $tmpl->display( array('control' => $this, 'functions' => $pageFunctions, 'params' => $params, 'email_form'=>$form->createView() ) ); return $rendered; 

Вот мой рабочий код (выполненный внутри действия контроллера):

 $path = __DIR__.'/../Resources/views/'; /* twig loader path */ $loader = new \Twig_Loader_Filesystem($path); $twig = new \Twig_Environment($loader); $twig->addExtension( new \Symfony\Bridge\Twig\Extension\FormExtension($this->get('twig.form.renderer'))); $tmpl = $twig->loadTemplate('test.html.twig'); return new Response($tmpl->render(array())); 

В основном я переместил вызов addExtension перед loadTemplate (иначе расширения уже были бы инициализированы).