আমি একটি টুইগ টেমপ্লেটে বর্তমান পাথটি পেতে কোডটির সন্ধান করলাম (এবং সম্পূর্ণ ইউআরএল নয়), আমি চাই না http://www.sitename.com/page
, আমার কেবল প্রয়োজন /page
।
{{ app.request.getBaseUrl ~ app.request.getPathInfo }}
( getBaseUrl
কিছুটা
আমি একটি টুইগ টেমপ্লেটে বর্তমান পাথটি পেতে কোডটির সন্ধান করলাম (এবং সম্পূর্ণ ইউআরএল নয়), আমি চাই না http://www.sitename.com/page
, আমার কেবল প্রয়োজন /page
।
{{ app.request.getBaseUrl ~ app.request.getPathInfo }}
( getBaseUrl
কিছুটা
উত্তর:
{{ path(app.request.attributes.get('_route'),
app.request.attributes.get('_route_params')) }}
যদি আপনি এটিকে কোনও ভিউ ভেরিয়েবলের মধ্যে পড়তে চান:
{% set currentPath = path(app.request.attributes.get('_route'),
app.request.attributes.get('_route_params')) %}
app
বিশ্বব্যাপী দৃশ্য পরিবর্তনশীল যেমন দরকারী শর্টকাট, সমস্ত প্রকারের রয়েছে app.session
এবং app.security.token.user
যে পরিষেবা আপনি একটি নিয়ামক ব্যবহার পারে উল্লেখ না করেন।
Uncaught PHP Exception PHPUnit_Framework_Error_Notice: "Undefined index: REQUEST_URI"
পান বর্তমান URL : {{ app.request.uri }}
এ Symfony 2.3, 3, 4, 5
কেবল পাথ পান : {{ app.request.pathinfo }}
(পরামিতি ছাড়াই)
অনুরোধ uri পান : {{ app.request.requesturi }}
(পরামিতি সহ)
{{ app.request.pathinfo }}
বা উপলভ্য পদ্ধতির তালিকা দেখুন/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Request.php
uri
প্যারামিটার সহ ইউআরএল পায়। কোনও পরামিতি pathinfo
সহ পাথ পায় । পরামিতিগুলির সাথে পাথ পায় । এই উত্তর আইএমওতে যুক্ত করা উচিত। আপনার খুব কমই ডোমেনের প্রয়োজন হবে এবং আপনি খুব কমই পরামিতিগুলি সরাতে চাইবেন। requestUri
requestUri
সিমফনি ২.১ এ আপনি এটি ব্যবহার করতে পারেন:
{{ path(app.request.attributes.get('_route'),
app.request.attributes.get('_route_params')) }}
সিমফনি ২.০-তে, একটি সমাধান হ'ল এটির জন্য একটি দ্বৈত প্রসারণ লিখুন
public function getFunctions()
{
return array(
'my_router_params' => new \Twig_Function_Method($this, 'routerParams'),
);
}
/**
* Emulating the symfony 2.1.x $request->attributes->get('_route_params') feature.
* Code based on PagerfantaBundle's twig extension.
*/
public function routerParams()
{
$router = $this->container->get('router');
$request = $this->container->get('request');
$routeName = $request->attributes->get('_route');
$routeParams = $request->query->all();
foreach ($router->getRouteCollection()->get($routeName)->compile()->getVariables() as $variable) {
$routeParams[$variable] = $request->attributes->get($variable);
}
return $routeParams;
}
এবং এই মত ব্যবহার করুন
{{ path(app.request.attributes.get('_route'), my_router_params()|merge({'additional': 'value'}) }}
পেজারের মতো আপনার লিঙ্কগুলিতে অতিরিক্ত পরামিতি যুক্ত করতে না চাইলে বা প্যারামিটারগুলির মধ্যে একটি পরিবর্তন করতে না চাইলে আপনার এই সমস্ত কিছুই লাগবে না।
এটি লক্ষ করা উচিত যে আপনার ইউআরএলগুলিতে অতিরিক্ত ক্যোয়ারী প্যারামিটার থাকলে, যা নয় কনফিগার করা রুটের অংশ , স্বীকৃত উত্তরগুলি সেগুলিকে বর্তমান ইউআরএল (পাথ) এ অন্তর্ভুক্ত করবে না।
উদাহরণস্বরূপ, যদি আপনার কাছে রেকর্ড সহ একটি তালিকা পৃষ্ঠা থাকে যা কীওয়ার্ড দ্বারা ফিল্টার করা যায় এবং পৃষ্ঠাতে পৃষ্ঠা রয়েছে, সম্ভবত "কীওয়ার্ড" এবং "পৃষ্ঠা" এর জন্য ক্যোয়ারী ভেরিয়েবলগুলি আপনার রুটে থাকবে না। পেজিংয়ের জন্য আপনার ফরোয়ার্ড এবং পিছনের বোতামগুলিতে আপনার সম্পূর্ণ বর্তমান ইউআরএল প্রয়োজন (এতে কীওয়ার্ড রয়েছে যাতে পরবর্তী পৃষ্ঠাটি এখনও ফিল্টার করা হয়)। এবং আপনার পৃষ্ঠা পরিবর্তনশীল পরিবর্তন করতে হবে।
সুতরাং আপনি বর্তমান রুটটি পেতে এবং অতিরিক্ত ভেরিয়েবলগুলিতে একীভূত করতে পারেন (এই অতিরিক্ত ভেরিয়েবলগুলির মধ্যে এক বা একাধিক সংশোধন করার পরে)। নোট করুন যে আপনি নিজের ভেরিয়েবলগুলিতে app.request.query.all
মার্জ করছেন এবং তারপরে সেই অ্যারেটি মার্জ করে app.request.attributes.get('_route_params')
। path()
পদ্ধতি প্রয়োজন যে আপনি রুট, যা তুমি কেন অন্তর্ভুক্ত করতে হবে এর সমস্ত প্রয়োজনীয় পরামিতি প্রদান _route_params
।
{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all|merge({'page': 2 }))) }}
এটি সত্যিই কুৎসিত, তবে আপনি যদি পৃষ্ঠাগুলি বিকাশ করছেন তবে আপনার পৃথক লিঙ্কে পৃষ্ঠা পরিবর্তনশীলটি পরিবর্তন করতে হবে, তাই আপনাকে প্রতিবার পুরো জিনিসটি অন্তর্ভুক্ত করতে হবে। সম্ভবত অন্যদের আরও ভাল সমাধান আছে।
{{ path(app.request.attributes.get('_route'), app.request.query.all|merge(app.request.attributes.get('_route_params'))) }}
আপনি যদি সাইলেক্স 2 ব্যবহার করছেন তবে আপনি আর অনুরোধের বস্তুটিতে আর অ্যাক্সেস করতে পারবেন না।
আপনি বর্তমান অনুরোধ বৈশিষ্ট্যগুলি এভাবে অ্যাক্সেস করতে পারেন।
app.request_stack.currentrequest.attributes.get('_route')
এবং সম্পূর্ণ বর্তমান URL উত্পন্ন করতে:
path(app.request_stack.currentrequest.attributes.get('_route'), app.request_stack.currentrequest.attributes.get('_route_params'))
global.request.attributes.get('_route')
। টুইগ ব্রিজ দরকার।