2016-06-13 2 views
1

일부 이미지를 동적으로 추가하려고합니다. 그래서 setImgService이라는 새로운 Twig 함수를 정의했습니다.이 함수는 기본적으로 서비스 이름을 chech하고, 그것에 따라 이미지에 따라 일부 HTML 코드를 반환합니다.Twig 함수로 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 코드를 반환합니다.

도움이 필요하십니까?

답변

1

Twig은 기본적으로 출력을 이스케이프 처리합니다. 함수에서 HTML을 표시하려면 함수 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'); 
    } 
}); 
+0

Twig_Markup를 반환 안전 할 것으로 보인다. 나는 그것을 시도 할 것이다. – danielcode7

관련 문제