我将使用Symfony2定期向许多用户发送简报。对于那些在使用电子邮件客户端阅读时遇到问题的人,我要在HTML电子邮件中加入永久链接。
无论如何,假设我以这种方式发送时事通讯:
// Assume success and create a new SentMessage to store and get permalink
$sent = new SentMessage();
$sent->setRecipients(/* ... */);
$sent->setSubject(/* ... */);
$sent->setContent(/* ... */);
// Get the slug for the new sent message
$slug = $sent->getSlug(); // Like latest-product-offers-546343
// Construct the full URL
// e.g. http://mydomain.com/newsletter/view/latest-product-offers-546343
// Actually send a new email
$mailer->send(/* .. */);
如何构建完整的URL(域+控制器+动作+ slug)以将其包含在新电子邮件中?
答案 0 :(得分:50)
当然是router
默认情况下,路由器会生成相对网址(例如
/blog
)。至 生成绝对URL,只需将true
传递给第三个参数generate()
方法:
也许您的代码可能看起来像这样
$url = $router->generate(
'slug_route_name',
array('slug' => $sent->getSlug()),
true // This guy right here
);
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
$url = $router->generate(
'slug_route_name',
array('slug' => $sent->getSlug()),
UrlGeneratorInterface::ABSOLUTE_URL // This guy right here
);
答案 1 :(得分:15)
使用Symfony 3进行更新:
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
$this->generateUrl('blog_show', array('slug' => 'my-blog-post'), UrlGeneratorInterface::ABSOLUTE_URL);
// http://www.example.com/blog/my-blog-post
答案 2 :(得分:5)
<强> TWIG 强>
如果这是在树枝模板中,请使用url('your route')
代替path('your route')
来获取绝对网址。