Подтвердить что ты не робот

Как я могу получить полный 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), чтобы включить его в новое письмо?

4b9b3361

Ответ 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.