我一直在重读symfony 4文档以尝试使用控制台命令生成twig模板但我没有找到命令。是否有人知道使用控制台命令生成twig模板?
答案 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