답변:
이것은 잘 작동합니다 :
{{ 'http://' ~ app.request.host }}
같은 태그에 'trans'와 같은 필터를 추가하려면
{{ ('http://' ~ app.request.host) | trans }}
으로 아담 Elsodaney 지적 , 당신은 또한 사용할 수있는 문자열 보간 이 이중 인용 된 문자열을 필요로 않습니다 :
{{ "http://#{app.request.host}" }}
{% set foo = 'http://' ~ app.request.host %}
. 그리고 당신은 할 수 있습니다 : {{ foo | trans }}
.
{{ form_open('admin/files/?path='~file_path|urlencode)|raw }}
데 도움이되었습니다. 추가 변수가 필요하지 않습니다.
찾고있는 연산자는 Alessandro가 말한 것처럼 Tilde (~)이며 여기 문서에 있습니다.
~ : 모든 피연산자를 문자열로 변환하고 연결합니다. {{ "안녕하세요 ~ ~ 이름 ~"! " }}이 반환합니다 (이름이 'John'이라고 가정) Hello John !. – http://twig.sensiolabs.org/doc/templates.html#other-operators
다음은 문서 어딘가에 예제입니다 .
{% set greeting = 'Hello' %}
{% set name = 'Fabien' %}
{{ greeting ~ name|lower }} {# Hello fabien #}
{# use parenthesis to change precedence #}
{{ (greeting ~ name)|lower }} {# hello fabien #}
당신은 ~
처럼 사용할 수 있습니다{{ foo ~ 'inline string' ~ bar.fieldName }}
그러나 concat
질문 에서처럼 사용할 함수를 직접 만들 수도 있습니다 .
{{ concat('http://', app.request.host) }}
:
에 src/AppBundle/Twig/AppExtension.php
<?php
namespace AppBundle\Twig;
class AppExtension extends \Twig_Extension
{
/**
* {@inheritdoc}
*/
public function getFunctions()
{
return [
new \Twig_SimpleFunction('concat', [$this, 'concat'], ['is_safe' => ['html']]),
];
}
public function concat()
{
return implode('', func_get_args())
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'app_extension';
}
}
에서 app/config/services.yml
:
services:
app.twig_extension:
class: AppBundle\Twig\AppExtension
public: false
tags:
- { name: twig.extension }
format()
필터를 사용하여 나뭇 가지 문자열 연결을 수행 할 수도 있습니다.format
은보다 표현적인 필터 에 중점을 둡니다.format
필터 를 사용하는 것입니다format
필터는 sprintf
다른 프로그래밍 언어 의 함수 처럼 작동 합니다format
더 복잡한 문자열 의 경우 필터는 ~ 연산자보다 성 가시지 않을 수 있습니다.example00 문자열 연결
{{ "% s % s % s!"| format ( 'alpha', 'bravo', 'charlie')}} --- 결과- 알파 브라보 찰리!
텍스트가 포함 된 example01 문자열 연결
{{ "% s의 % s는 주로 % s에 속합니다!"| format ( 'alpha', 'bravo', 'charlie')}} --- 결과- 브라보의 알파는 주로 찰리에 떨어집니다!
sprintf
다른 언어 와 동일한 구문을 따릅니다.
{{ "% 04d의 % 04d는 주로 % s에 속합니다!"| format (2,3, 'tree')}} --- 결과- 0003의 0002는 주로 나무에 떨어진다!
"{{...}}"구분 기호는 문자열 내에서도 사용할 수 있습니다.
"http://{{ app.request.host }}"