I'm going to use Symfony2 to sent periodically a newsletter to many users. I've to include a permalink to the HTML email for those who experience problems in reading them with an email client.
Anyway, assuming that i'm sending the newsletter this way:
// 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(/* .. */);
How can i construct the full URL (domain + controller + action + slug) to include it in a new email?
With the router, of course
By default, the router will generate relative URLs (e.g.
/blog
). To generate an absolute URL, simply passtrue
to the third argument of thegenerate()
method:
Perhaps your code might look like this
$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 );
Update with 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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With