2012-02-07 5 views
9

私はSymfony 2を使用しており、テンプレートではなくサービスクラスからアセットへの絶対URLを生成したいとします。サービス内からアセットURLを生成するにはどうすればよいですか?

{{ asset('/path/to/my/asset') }} 

はテンプレートに返されます。

これは可能ですか?その後のgetURLを呼び出して、あなたのサービスにtemplating.helper.assetsを注入し、基本的に symfonyの/バンドル/ TwigBundle /拡張/ AssetExtension

public function getAssetUrl($path, $packageName = null) 
{ 
    return $this->container->get('templating.helper.assets')->getUrl($path, $packageName); 
} 

答えて

15

は見てみましょう。

+1

ありがとう答えのためのs。出来た。私は、正しく挿入するために** templating.helper.assets **のサービス引数に 'strict =" false "'を入れる必要があることを追加したいだけです。今はうまくいく。 –

+14

絶対URLを取得するにはどうすればよいですか? – Rudie

6

ここでのSymfony 2.8のためのシンプルでクリーンな方法です:

services.yml:サービスで

arguments: 
    assets: "@templating.helper.assets" 

protected $assets; 

public function __construct($assets) 
{ 
    $this->assets = $assets; 
} 

その後、あなたは、任意の機能でそれを使用することができますこのようなサービス:

$this->assets->getUrl('myurl'); 
+4

symfony 3.Xでは、 'templating.helper.assets'サービスが削除され、' assets.packages'に置き換えられました。 – DFayet

関連する問題