जवाबों:
यह ठीक काम करना चाहिए:
{{ 'http://' ~ app.request.host }}
एक फिल्टर जोड़ने के लिए - जैसे 'ट्रांस' - उसी टैग उपयोग में
{{ ('http://' ~ app.request.host) | trans }}
जैसा कि एडम एलसोडेनी बताते हैं , आप स्ट्रिंग इंटरपोलेशन का भी उपयोग कर सकते हैं , इसके लिए दोहरे उद्धृत स्ट्रिंग्स की आवश्यकता होती है:
{{ "http://#{app.request.host}" }}
{% set foo = 'http://' ~ app.request.host %}
। और फिर आप कर सकते हैं {{ foo | trans }}
:।
{{ form_open('admin/files/?path='~file_path|urlencode)|raw }}
एक अतिरिक्त चर के लिए कोई ज़रूरत नहीं है।
ट्विग में एक छोटी ज्ञात विशेषता स्ट्रिंग इंटरपोलेशन भी है :
{{ "http://#{app.request.host}" }}
आप जिस ऑपरेटर की तलाश कर रहे हैं, वह टिल्डे (~) है, जैसे कि एलेसेंड्रो ने कहा, और यहां यह दस्तावेज में है:
~: सभी ऑपरेंड्स को स्ट्रिंग्स में परिवर्तित करता है और उन्हें समेटता है। {{"हैलो" ~ नाम ~ "!" }} वापस आ जाएगा (संभालने का नाम 'जॉन' है) हैलो जॉन !. - 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 }}
आप ~
पसंद कर सकते हैं{{ 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!" | प्रारूप ('अल्फा', 'ब्रावो', 'चार्ली')}} --- परिणाम -- alphabravocharlie!
example01 स्ट्रिंग कॉनसैट इंटरवेंशन टेक्स्ट के साथ
{{"% S में% s मुख्य रूप से% s पर गिरता है!" | स्वरूप ('अल्फा', 'ब्रावो', 'चार्ली')}} --- परिणाम -- ब्रावो में अल्फा मुख्य रूप से चार्ली पर पड़ता है!
sprintf
अन्य भाषाओं के समान सिंटैक्स का अनुसरण करता है
{{"% 04d% 04d मुख्य रूप से% s पर पड़ता है!" | स्वरूप (2,3, 'वृक्ष')} --- परिणाम -- 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 }}"