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;
}
}