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(ドメイン+コントローラー+アクション+スラグ)を作成して、新しい電子メールに含めるにはどうすればよいですか?
router で、もちろん
デフォルトでは、ルーターは相対URLを生成します(例:_
/blog
_)。絶対URLを生成するには、true
をgenerate()
メソッドの3番目の引数に渡すだけです。
おそらくあなたのコードはこのように見えるかもしれません
_$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
);
_
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
[〜#〜]小枝[〜#〜]
これがtwigテンプレート内にある場合は、url('your route')
の代わりにpath('your route')
を使用して絶対URLを取得します。