2

Twig を使用していくつかの画像を動的に追加しようとしています。そこで、基本的にサービス名をチェックする新しい Twig 関数を定義しsetImgService、それに応じて、イメージに応じた HTML コードを返します。

機能コード:

$setImgService = new Twig_SimpleFunction('setImgService', function($serviceName){
    switch ($serviceName){
        case "Analitycs":
            return '<img src="assets/img/analitycs.png">';
        case "Hosting":
            return '<img src="assets/img/hosting.png">';
        case "SEO":
            return '<img src="assets/img/seo.png">';
        case "Maintenance":
            return '<img src="assets/img/maintenance.png">';
        case "Your own domain":
            return '<img src="assets/img/domain.png">';
        case "BackUp":
            return '<img src="assets/img/backup.png">';   
    }
});
// Add function to Twig
$twig->addFunction($setImgService);

しかし、私が使用するとき

{{ setImgService('serviceName') }}

プレーンテキストのような HTML コードを返します。

何か助けてください。

4

1 に答える 1

1

Twig デフォルトで出力をエスケープします。HTML関数の内部を表示するにtwigは、フィルターを使用するか、出力を安全とマークしてエスケープされないようにする をraw返します。Twig_Markup

生フィルター

{{ setImgService('serviceName') | raw }}

Twig_Markup

$setImgService = new Twig_SimpleFunction('setImgService', function($serviceName){
    switch ($serviceName){
        case "Analitycs":
            return new Twig_Markup('<img src="assets/img/analitycs.png">', 'UTF-8');
        case "Hosting":
            return new Twig_Markup('<img src="assets/img/hosting.png">', 'UTF-8');
        case "SEO":
            return new Twig_Markup('<img src="assets/img/seo.png">', 'UTF-8');
        case "Maintenance":
            return new Twig_Markup('<img src="assets/img/maintenance.png">', 'UTF-8');
        case "Your own domain":
            return new Twig_Markup('<img src="assets/img/domain.png">', 'UTF-8');
        case "BackUp":
            return new Twig_Markup('<img src="assets/img/backup.png">', 'UTF-8');  
    }
});
于 2016-06-14T05:56:28.393 に答える