Как я могу получить полный url для включения в бюллетень, отправленный с Symfony2?
Я собираюсь использовать 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 (domain + controller + action + slug), чтобы включить его в новое письмо?
Ответы
Ответ 1
С маршрутизатор, конечно
По умолчанию маршрутизатор будет генерировать относительные URL-адреса (например, /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
);
Ответ 2
Обновление с помощью 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
Ответ 3
TWIG
Если это находится в шаблоне твига, используйте url('your route')
вместо path('your route')
, чтобы получить абсолютный URL.