나뭇 가지에 끈을 연결하는 방법
누구든지 나뭇 가지에 끈을 연결하는 방법을 알고 있습니까? 나는 다음과 같은 것을하고 싶다 :
{{ concat('http://', app.request.host) }}
이것은 잘 작동합니다 :
{{ 'http://' ~ app.request.host }}
같은 태그에 'trans'와 같은 필터를 추가하려면
{{ ('http://' ~ app.request.host) | trans }}
으로 아담 Elsodaney 지적 , 당신은 또한 사용할 수있는 문자열 보간 이 이중 인용 된 문자열을 필요로 않습니다 :
{{ "http://#{app.request.host}" }}
또한 Twig의 작은 알려진 기능은 문자열 보간입니다 .
{{ "http://#{app.request.host}" }}
찾고있는 연산자는 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 #}
이 경우 일반 텍스트와 변수를 출력하려는 경우 다음과 같이 할 수 있습니다.
http://{{ app.request.host }}
일부 변수를 연결하려면 alessandro1997의 솔루션이 훨씬 좋습니다.
{{ ['foo', 'bar'|capitalize]|join }}
보시다시피 set
별도의 라인 에서 사용할 필요없이 필터 및 기능에서 작동 합니다.
연결된 문자열 (또는 기본 수학 연산)이있는 필터를 사용해야 할 때마다 ()로 감싸 야합니다. 예 :
{{ ('http://' ~ app.request.host) | url_encode }}
Symfony에서는이를 프로토콜 및 호스트에 사용할 수 있습니다.
{{ app.request.schemeAndHttpHost }}
@ alessandro1997은 연결에 대한 완벽한 대답을했지만.
당신은 ~
처럼 사용할 수 있습니다{{ 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 }
빠른 답변 (TL; DR)
format()
필터를 사용하여 나뭇 가지 문자열 연결을 수행 할 수도 있습니다.
자세한 답변
문맥
- 나뭇 가지 2.x
- 문자열 구축 및 연결
문제
- 시나리오 : DeveloperGailSim이 Twig에서 문자열 연결을 수행하려고합니다.
- 이 스레드의 다른 답변은 이미 concat 연산자를 해결합니다.
- 이 답변
format
은보다 표현적인 필터 에 중점을 둡니다.
해결책
- 다른 방법은
format
필터 를 사용하는 것입니다 - 이
format
필터는sprintf
다른 프로그래밍 언어 의 함수 처럼 작동 합니다 format
더 복잡한 문자열 의 경우 필터는 ~ 연산자보다 성 가시지 않을 수 있습니다.
예 00
example00 문자열 연결
{{ "% s % s % s!"| format ( 'alpha', 'bravo', 'charlie')}} --- 결과- 알파 브라보 찰리!
실시 예 01
텍스트가 포함 된 example01 문자열 연결
{{ "% s의 % s는 주로 % s에 속합니다!"| format ( 'alpha', 'bravo', 'charlie')}} --- 결과- 브라보의 알파는 주로 찰리에 떨어집니다!
예 02
- 숫자 형식의 example02 문자열 연결
sprintf
다른 언어 와 동일한 구문을 따릅니다.{{ "% 04d의 % 04d는 주로 % s에 속합니다!"| format (2,3, 'tree')}} --- 결과- 0003의 0002는 주로 나무에 떨어진다!
또한보십시오
문자열, 변수 및 번역을 혼합하려면 간단히 다음을 수행하십시오.
{% set add_link = '
<a class="btn btn-xs btn-icon-only"
title="' ~ 'string.to_be_translated'|trans ~ '"
href="' ~ path('acme_myBundle_link',{'link':link.id}) ~ '">
</a>
' %}
모든 것이 섞여 있지만 매력처럼 작동합니다.
"{{...}}"구분 기호는 문자열 내에서도 사용할 수 있습니다.
"http://{{ app.request.host }}"
참고 URL : https://stackoverflow.com/questions/7704253/how-to-concatenate-strings-in-twig
'Programing' 카테고리의 다른 글
Set을 Array로 변환하는 방법? (0) | 2020.02.20 |
---|---|
브라우저 언어 기본 설정을 감지하기위한 JavaScript (0) | 2020.02.20 |
SDK 'iOS 10.0'의 제품 유형 'Application'에 코드 서명이 필요합니다-StickerPackExtension에는 개발 팀 오류가 필요합니다 (0) | 2020.02.20 |
^ M을 무시하는 git-diff (0) | 2020.02.20 |
JsonMappingException : [단순 유형, 클래스] 유형에 적합한 생성자가 없습니다. JSON 객체에서 인스턴스를 생성 할 수 없습니다. (0) | 2020.02.20 |