Programing

나뭇 가지에 끈을 연결하는 방법

lottogame 2020. 2. 20. 23:13
반응형

나뭇 가지에 끈을 연결하는 방법


누구든지 나뭇 가지에 끈을 연결하는 방법을 알고 있습니까? 나는 다음과 같은 것을하고 싶다 :

{{ 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



반응형