2016-09-16 2 views
0

Ich möchte eine Asset (Bild) vollständige URL (mit Domäne und Basis) in einer Zweigvorlage hinzufügen, wenn über eine Befehlszeile (Konsolenbefehl) ausgeführt wird. Es soll an E-Mail gesendet werden.Symfony Asset-URL bei der Ausführung von Konsole

Das Problem ist, dass die Verwendung von absolute_url (asset()) den Host- und Basispfad bei der Ausführung auf der Konsole nicht enthält.

Auch, wie in http://symfony.com/doc/current/console/request_context.html spezifiziert, funktioniert es nur für URLs, nicht für Vermögenswerte.

Ich habe auch versucht, den Router Kontext zu setzen, wenn von der Konsole ausgeführt wird: Ohne Erfolg

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

. Irgendeine Idee?

Antwort

0

In meiner Anwendung, speziell für diese Situation mit E-Mail, i hinzugefügt globalen Variable in Zweig Konfiguration:

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

Und Sie diese Variable in parameters.yml

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

Und endlich, Jede E-Mail-Vorlage, die ich verwendet habe:

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

Sie müssendefinierenParameter.

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

Um den Anforderungskontext zu konfigurieren - die durch den URL-Generator verwendet wird - die Parameter neu definieren kann es als Standardwerte verwendet den Standard-Host (localhost) und Schema (http)

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

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

können Sie diese Lösung verwenden, die keine Variable oder Parameter von der Konfiguration erfordert das Hinzufügen und ist die gleiche Funktion, die fürvon Zweig verwendet wird

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

die vollständige URL Ihres Vermögens auf $assetFullUrl

sein
Verwandte Themen