উত্তর:
এটি ভাল কাজ করা উচিত:
{{ '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}" }}
আপনি যে অপারেটরটির সন্ধান করছেন তা হলেন টিলডে (~), যেমন আলেসান্দ্রো বলেছিলেন, এবং এখানে এটি নথিতে রয়েছে:
।: সমস্ত অপারেশনগুলিকে স্ট্রিংয়ে রূপান্তর করে এবং তাদের সাথে সংযুক্ত করে। ! Hello "হ্যালো" ~ নাম ~ "!" } return ফিরে আসবে (ধরে নিলামের নাম 'জন') হ্যালো জন! - 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 }}
আপনি যদি কিছু ভেরিয়েবল একত্রিত করতে চান তবে আলেসান্দ্রো 1997 এর সমাধানটি আরও ভাল।
{{ ['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
ফিল্টার আরো জটিল স্ট্রিং জন্য ~ অপারেটর কম কষ্টকর হতে পারেউদাহরণস্বরূপ স্ট্রিং কনক্যাট বেয়ার
{{"% s% s% s!" | ফর্ম্যাট ('আলফা', 'ব্র্যাভো', 'চার্লি')} --- ফলাফল -- alphabravocharlie!
হস্তক্ষেপযুক্ত পাঠ্য সহ 010 স্ট্রিং কনক্যাট
{{"% S এর% s মূলত% s টিতে পড়ে!" | ফর্ম্যাট ('আলফা', 'ব্র্যাভো', 'চার্লি')}} --- ফলাফল -- ব্রাভোর আলফা মূলত চার্লিতে পড়ে!
sprintf
অন্যান্য ভাষার মতো একই বাক্য গঠন অনুসরণ করে
{{"% 04dd% 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 }}"