2016-09-16 16 views
0

コマンドライン(コンソールコマンド)から実行しているときに、アセット(画像)フルURL(ドメインとベース)をtwigテンプレートに追加します。それは電子メールに送信されることを意味します。コンソールから実行するときのsymfonyアセットURL

absolute_url(asset())を使用すると、コンソールで実行しているときにホストとベースパスが含まれないという問題があります。

また、http://symfony.com/doc/current/console/request_context.htmlに指定されているように、URLはアセットではなく動作します。

コンソールから実行しているとき、私はまた、ルータのコンテキストを設定しようとしました:いいえ成功し

$context = $this->getContainer()->get('router')->getContext(); 
$context->setHost($defaultDomain); 
$context->setScheme($scheme); 

を。何か案が?私のアプリケーションで

答えて

0

、電子メールでこのような状況のための特別な、私は小枝の設定にグローバル変数を追加しました:で、

# app/config/config.yml 
twig: 
    globals: 
     site_addr: "%site_addr%" 

そしてparameters.yml

# app/config/parameters.yml 
site_addr: https://some.site 

そして最後には、この変数を設定しますそれぞれのメールテンプレートiはこれを使用しました:

# AppBundle/Resources/views/Emails/layout.html.twig 
<img src="{{ site_addr ~ asset('SomeAssetName') }}"/> 
0

を定義する必要がありますパラメータ。

framework: 
    assets: 
     base_urls: ['http://localhost:8000'] 
1

要求コンテキストを設定するには - あなたはそれがデフォルトのホスト(ローカルホスト)を変更するには、デフォルト値として使用するパラメータとのスキーム(HTTP)

# app/config/parameters.yml 
parameters: 
    router.request_context.host: example.org 
    router.request_context.scheme: https 
    router.request_context.base_url: my/path 
を再定義することができます - URL Generatorで使用されていますあなたが設定上の任意の変数またはパラメータを追加する必要がとのために小枝で使用されるのと同じ機能ですしない、このソリューションを使用することができます

http://symfony.com/doc/current/console/request_context.html

#command 
/** @var \Twig_Environment $twig */ 
$twig = $this->getContainer()->get('twig'); 
die($twig->render('view.html.twig')); 

#view.html.twig 
{{ absolute_url(asset('images/logo.png')) }} 

#output 
https://example.org/images/logo.png 
0

あなたの資産の完全なURLが$assetFullUrl

になります

public function yourAction(AssetsHelper $assetsHelper, HttpFoundationExtension $httpExtension) 
{ 
    $assetsPath = $assetsHelper->getUrl('/img/test.jpg'); 
    $assetFullUrl = $httpExtension->generateAbsoluteUrl($assetPath); 
} 

関連する問題