July 11, 2014

Symfony 2のコマンド内でTwigテンプレートをレンダリングする

ContainerAwareCommandを継承して以下のようにする。

namespace Acme\DemoBundle\Command;

use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class RenderCommand extends ContainerAwareCommand
{
  protected function configure()
  {
    $this
      ->setName('demo:render')
      ->setDescription('テンプレートをレンダリングする')
      ->addArgument('name', InputArgument::REQUIRED, '名前');
  }

  protected function execute(InputInterface $input, OutputInterface $output)
  {
    $name = $input->getArgument('name');

    // テンプレートをレンダリングする
    $templating = $this->getContainer()->get('templating');
    $content = $templating->render(
      'AcmeDemoBundle:Demo:greeting.txt.twig', array(
        'name' => $name
      )
    );

    $output->writeln($content);

    return 0;
  }
}
Posted by Nao Iizuka <iizuka@kyu-mu.net>
Powered by Bitter