22

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

4

3 に答える 3

54

もちろんルーター付き

デフォルトでは、ルーターは相対URLを生成します(例/blog)。絶対URLを生成するには、メソッドtrueの3番目の引数に渡すだけです。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
);
于 2012-05-16T15:16:04.063 に答える
16

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
于 2016-03-09T22:26:46.950 に答える
7

小枝

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

于 2015-01-13T11:14:16.867 に答える