Intereting Posts
Изменение API графиков Google: тип изображения (размер) больше не работает? Выбирайте продукты по нескольким атрибутам, используя AND вместо OR, конкатенатор, модель данных EAV Отображение изображения php без загрузки по почте Что такое синтаксис «break / continue $ var» (будет удален в PHP 5.4)? Правило htaccess не работает на localhost Вход в систему с использованием разных пользовательских ролей в CakePHP? Symfony 2 – UploadedFile, метод переноса не удалось – невозможно создать каталог … Использование long int в PHP Вставка новых строк из локальной таблицы в удаленную таблицу Использование serveride для подключения к API Как отсортировать массив PHP с помощью элемента, вложенного внутри? Создание интерфейса в PHP, который может указать тип, чтобы определить, какой класс использовать PHP: Какие логические варианты использования включают / требуют удаленные исходные файлы? Какие рамки вы предложите для сильной расширяемой платформы? как получить идентификатор из базы данных?

как выполнить $ this-> render () внутри службы symfony2?

У меня этот код внутри обычного контроллера symfony2:

$temp = $this->render('BizTVArchiveBundle:ContentTemplate:'.$content[$i]['template'].'/view.html.twig', array( 'c'=> $content[$i], 'ordernumber' => 1, )); 

И он отлично работает.

Теперь я пытаюсь перенести это на службу, но я не знаю, как получить доступ к эквиваленту $ этого нормального контроллера.

Я попытался впрыснуть контейнер следующим образом:

  $systemContainer = $this->container; $temp = $systemContainer->render('BizTVArchiveBundle:ContentTemplate:'.$content[$i]['template'].'/view.html.twig', array( 'c'=> $content[$i], 'ordernumber' => 1, )); 

Но это не сработало, и я предполагаю, что это потому, что рендер на самом деле не использует контейнер $ this-> обычного контроллера, а использует только эту часть $.

Кто-нибудь знает, как использовать $ this-> render () из службы?

Выполнить render метода в классе Symfony\Bundle\FrameworkBundle\Controller . В нем говорится:

 return $this->container->get('templating')->render($view, $parameters); 

поэтому, поскольку у вас уже есть контейнер, вы можете использовать его, как в приведенном выше примере.

ПРИМЕЧАНИЕ. Включение всего контейнера в эксплуатацию считается плохой практикой, в этом случае вам следует вводить только шаблонный движок и вызывать метод render объекта шаблонирования.

Итак, полная картина:

services.yml :

 services: your_service_name: class: Acme\YourSeviceClass arguments: [@templating] 

твой класс:

 public function __construct($templating) { $this->templating = $templating } 

и ваш вызов рендеринга:

 $this->templating->render($view, $parameters)