如何将完整的URL添加到Symfony2发送的简报中?

时间:2012-05-16 14:48:56

标签: url symfony permalinks swiftmailer

我将使用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)以将其包含在新电子邮件中?

3 个答案:

答案 0 :(得分:50)

当然是router

  

默认情况下,路由器会生成相对网址(例如/blog)。至   生成绝对URL,只需将true传递给第三个参数   generate()方法:

也许您的代码可能看起来像这样

Symfony2的

$url = $router->generate(
    'slug_route_name',
    array('slug' => $sent->getSlug()),
    true // This guy right here
);

Symfony3

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')来获取绝对网址。