0

私は Symfony2 の初心者で、少し質問があります。

txt と html の部分を含む電子メール テンプレートを開発しています (問題ありません)。

私が抱えている唯一の「問題」は、TWIGのアセットの絶対パスです。

私の email.html.twig ファイル内には、次のようなものがあります。

<img src="{{ asset('images/my-image.png') }}" alt="My image" />ただし、相対パスでルートを書き込みます。

次のような絶対パスを追加するための小さな解決策を発見しました。

{% set abs = app.request.scheme ~  '://' ~ app.request.host %}
<img src="{{ abs ~ asset('images/my-image.png') }}" alt="My image" />

できます!しかし、私はこのソリューションを改善し、カスタム フィルターの作成方法も学びたいと思っています (ドキュメントを読みましたが、少し迷いました)。

私はこのようなものを作成したい:

<img src="{{ asset('images/my-image.png' | absolute) }}" alt="My image" />

しかし、資産拡張機能を適切にオーバーライドする方法がわかりません。手伝って頂けますか?

どうもありがとう!!

4

1 に答える 1

1

ソリューションをコピーして貼り付けるのは少し難しいですが、簡単なクックブックを作成できるので、ステップバイステップで自分で実行できます。

1) Assetic/Filter/FilterInterface を実装する必要があります

2) FilterInterface クラスを見ると、filterLoad と filterDump の 2 つのメソッドを実装する必要があることがわかります。

したがって、次のようにします。

<?php

namespace You\YourBundle\Assetic\Filter;

use Assetic\Asset\AssetInterface;
use Assetic\Filter\FilterInterface;

class YourAsseticFilter implements FilterInterface
{ 
    public function filterLoad(AssetInterface $asset)
    {

          // do something

    }


    public function filterDump(AssetInterface $asset)
    {
        $content = $asset->getContent();

        // do something

        $asset->setContent($content);
    }


}

これを行った後、YourBundle の services.yml に twig 拡張機能を登録するのと非常によく似た作業を行う必要があります。確かに、YML、XML ... 構成を使用するかどうかによって異なります。私はymlを使用しているので、ymlで入力します:)

parameters:
    your_bundle.class: You\YourBundle\Assetic\Filter\YourAsseticFilter

services:
    your_bundle.assetic.your_assetic_filter:
        class: %your_bundle.class%
        tags:
            - { name: assetic.filter }
            - { alias: yourChosenNameForYourNewAsseticFilter }

そして、あなたはそれを次のように呼び出します | もちろん、yourChosenNameForYourNewAsseticFilter です。

于 2013-07-08T07:11:38.267 に答える