使用命令生成绝对 URL 的附加信息(例如发送电子邮件)
在命令中,{{ absolute_url(path('index')) }}
不是开箱即用的。
您将需要添加 antongorodezkiy 的答案中显示的附加配置。
但是如果您不想更改配置,因为您不确定它会如何影响整个应用程序,您可以在命令中配置路由器。
这是文档:
https://symfony.com/doc/3.4/console/request_context.html
这是代码:
use Symfony\Component\Routing\RouterInterface;
// ...
class DemoCommand extends Command
{
private $router;
public function __construct(RouterInterface $router)
{
parent::__construct();
$this->router = $router;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$context = $this->router->getContext();
$context->setHost('example.com');
$context->setScheme('https');
$context->setBaseUrl('my/path');
$url = $this->router->generate('route-name', ['param-name' => 'param-value']);
// ...
}
}
在 Twig 模板中生成 URL
<a href="{{ absolute_url(path(...)) }}"></a>
您可以从 env 文件中获取 HOST 和 SCHEME
$context = $this->router->getContext();
$context->setHost($_ENV['NL_HOST']);
$context->setScheme($_ENV['NL_SCHEME']);
只需在 .env 和 .env.local 文件中定义变量
NL_HOST=mydomain.com
NL_SCHEME=https