web-dev-qa-db-ja.com

Symfony2で送信されるニュースレターに含める完全なURLを取得するにはどうすればよいですか?

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(ドメイン+コントローラー+アクション+スラグ)を作成して、新しい電子メールに含めるにはどうすればよいですか?

20
gremo

router で、もちろん

デフォルトでは、ルーターは相対URLを生成します(例:_/blog_)。絶対URLを生成するには、truegenerate()メソッドの3番目の引数に渡すだけです。

おそらくあなたのコードはこのように見えるかもしれません

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
);
_
51
Peter Bailey

Symfony3でアップデート:

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
15
ArGh

[〜#〜]小枝[〜#〜]

これがtwigテンプレート内にある場合は、url('your route')の代わりにpath('your route')を使用して絶対URLを取得します。

5
Baig