命令控制台在symfony 4中生成树枝模板

时间:2018-01-19 12:01:43

标签: templates command twig symfony4

我一直在重读symfony 4文档以尝试使用控制台命令生成twig模板但我没有找到命令。是否有人知道使用控制台命令生成twig模板?

4 个答案:

答案 0 :(得分:1)

我查了一下,悲伤的答案是否定的。制造商命令列表可用here。你甚至可以做一个枝条扩展,但不是视图。我认为值得提交给他们。

答案 1 :(得分:0)

我需要Twig功能才能从我的自定义控制台命令发送电子邮件。

这是我提出的解决方案。

首先我安装了Twig。

composer require "twig/twig:^2.0"

然后创建了我自己的树枝服务。

<?php

# src/Service/Twig.php

namespace App\Service;

use Symfony\Component\HttpKernel\KernelInterface;

class Twig extends \Twig_Environment {

    public function __construct(KernelInterface $kernel) {
        $loader = new \Twig_Loader_Filesystem($kernel->getProjectDir());

        parent::__construct($loader);
    }
}

现在我的电子邮件命令看起来像这样。

<?php

# src/Command/EmailCommand.php

namespace App\Command;

use Symfony\Component\Console\Command\Command,
    Symfony\Component\Console\Input\InputInterface,
    Symfony\Component\Console\Output\OutputInterface,
    App\Service\Twig;

class EmailCommand extends Command {

    protected static $defaultName = 'mybot:email';

    private $mailer,
            $twig;

    public function __construct(\Swift_Mailer $mailer, Twig $twig) {
        $this->mailer = $mailer;
        $this->twig = $twig;

        parent::__construct();
    }

    protected function configure() {
        $this->setDescription('Email bot.');
    }

    protected function execute(InputInterface $input, OutputInterface $output) {

        $template = $this->twig->load('templates/email.html.twig');

        $message = (new \Swift_Message('Hello Email'))
            ->setFrom('emailbot@domain.com')
            ->setTo('someone@somewhere.com')
            ->setBody(
                $template->render(['name' => 'Fabien']),
                'text/html'
            );

        $this->mailer->send($message);
    }
}

答案 2 :(得分:0)

我解决了

 class SendEmailNotify extends Command
{
    private $container;
    private $twig;
    private $mailer;

    public function __construct($name = null, \Psr\Container\ContainerInterface $container, \Swift_Mailer $mailer)
    {
        parent::__construct($name);
        $this->container = $container;
        $this->twig = $this->container->get('twig');
        $this->mailer = $mailer;
    }

答案 3 :(得分:0)

此说明将使控制器没有树枝模板

php bin/console make:controller --no-template  

令人惊讶的是,此指令将创建一个Controller以及一个模板文件和子目录

php bin/console make:controller