2016-09-16 150 views
0

我想從命令行(控制檯命令)運行時,在樹枝模板中添加資源(圖像)完整url(帶域和基礎)。它意味着被髮送到電子郵件。從控制檯運行時Symfony資產url

問題是,在控制檯上運行時,使用absolute_url(asset())不包括主機和基本路徑。

此外,如http://symfony.com/doc/current/console/request_context.html中所述,它僅適用於網址,不適用於資產。

我也嘗試將路由器的情況下,從控制檯上運行時:

$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 

,最後,在每個電子郵件模板我用這個:

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

您必須定義base_urls參數。

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

要配置請求上下文 - 這是使用的URL生成器 - 你可以重新定義它使用默認值的參數更改默認主機(本地主機)和方案(HTTP)

# app/config/parameters.yml 
parameters: 
    router.request_context.host: example.org 
    router.request_context.scheme: https 
    router.request_context.base_url: my/path 

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

可以使用此解決方案,它不需要加入上配置的任何變量或參數,並且是用於通過爲枝杈相同的功能

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

你的資產的完整URL將是$assetFullUrl