আমি কীভাবে বর্তমান পথের উপন্যাস বা পথ পাব?


56

ড্রপাল 8-এ আমি কীভাবে বর্তমান উপনাম এবং / অথবা পাথ পাব?

ড্রুপাল 7-এ আমি এটি দিয়েছিলাম drupal_get_path_alias()। ড্রুপাল 8 এ আমার সমতুল্য কোডটি কী ব্যবহার করা উচিত?

উত্তর:


107

অন্যান্য উত্তরগুলির মধ্যে কয়েকটি দ্রুপাল 8 এর পূর্ববর্তী আলফা / বিটা সংস্করণের সময় সঠিক ছিল বা অসম্পূর্ণ বলে মনে হয়েছিল। বিটা 7 (এবং আশা করি স্থায়ীভাবে) হিসাবে নিম্নলিখিত বিধিগুলি প্রয়োগ করা উচিত:

বর্তমান কাঁচা পথে (অ-অ্যালিজেড ড্রুপাল পাথ):

$current_path = \Drupal::service('path.current')->getPath()

বর্তমান ইউআরআই-র জন্য , যা অনুরোধের সরাসরি উপস্থাপনা (এটি এমনকি কোনও ক্যোয়ারী স্ট্রিং অন্তর্ভুক্ত করতে পারে):

$current_uri = \Drupal::request()->getRequestUri();

অবশ্যই কোনও গ্যারান্টি নেই যে এই $current_uriমানটি আপনাকে একটি উপনাম দেবে, এমনকি যদি কোনও অনুরোধের জন্য পাওয়া যায় তবে এটি কেবল ব্যবহারকারীদের অনুরোধের জন্য প্রতিনিধিত্ব করে। সুতরাং আপনি যা যা জিজ্ঞাসা করছেন তা কঠোরভাবে করতে (যদি পাওয়া যায় তবেই উরফ পান, এবং যদি না পায় তবে) আমি মনে করি আপনি করতে পারেন:

$current_path = \Drupal::service('path.current')->getPath();
$result = \Drupal::service('path.alias_manager')->getAliasByPath($current_path);

অবশ্যই আপনি যে প্রক্রিয়াজাতকরণ করছেন তার উপর নির্ভর করে পথের পরিবর্তে রুটের সাথে কাজ করা ভাল হতে পারে তবে আমি মনে করি এটি সম্পূর্ণ অন্য বিষয়।


আপনি কেন উল্লেখ করেছেন যে পথগুলির পরিবর্তে রুটগুলি ব্যবহার করা ভাল? আপনি একটি সংক্ষিপ্ত উদাহরণ / কারণ প্রদান করতে পারেন?
itdarrylnorris

@ দারোল 100, এর পক্ষে একটি বিস্তৃত উত্তর দেওয়ার জন্য আমি সেরা ব্যক্তি নাও হতে পারি, তবে আমি আপনাকে বলতে পারি যে প্রোগ্রামাল্যাটিক ইউআরএল জেনারেশনের জন্য পাথের ব্যবহারটি ড্রুপাল 8-তে আনুষ্ঠানিকভাবে অবমূল্যায়িত হয়েছে - দেখুন: drupal.org/node/2046643 । সিমফনি রুটগুলি পথের কাঠামোগুলি থেকে পৃথক হয়ে সংস্থানগুলিতে মানচিত্রের আরও শক্তিশালী উপায় সরবরাহ করে (আপনি যদি রুটগুলি ব্যবহার করে কোনও লিঙ্ক তৈরি করেন তবে সেই লিঙ্কটি ইউআরএল পাথ / প্যাটার্ন পরিবর্তিত হলেও কার্যকর থাকবে)।
rjacobs

কেবলমাত্র একটি নোট যা ::getAliasByPath()কোনও অগ্রণী স্ল্যাশ ছাড়া পাথের স্ট্রিংকে আর গ্রহণ করবে না (যেহেতু আমি বিশ্বাস করি বিটা 13)।
অন্যমাচাইন

5
getAliasByPathভাষা উপসর্গ ছাড়া পথ ফিরে না। এই সমাধান করার কোন ধারণা?
ফিলিপ মাইকেল

1
একটি দ্বৈত টেম্পলেট মধ্যে থেকে কি?
EAT

35

URL টির জন্য URL টির সঠিক উপায় নয়।

$current_path = \Drupal::service('path.current')->getPath()

না \Drupal::request()->getRequestUri();সম্মান Drupal এর একটি subfolder মধ্যে ইনস্টল?
ব্রায়ান

আমি কী করব না বর্তমানের পথে? এটি কেবল একটি স্ট্রিং থেকে পাওয়ার উপায় আছে?
ব্র্যান্ডেনবি 171

আমি কীভাবে এর পরম পাথ পেতে পারি: যেমন: mydrupalsite.org/node/123 ?
এমকেলেআ

1
গ্লোবাল $ বেস_রোট; $ বর্তমান_উড়ি = \ দ্রুপাল :: অনুরোধ () -> getRequestUri (); $ বর্তমান_পথ = $ বেস_রোট। $ current_uri;
oknate

18

ড্রুপাল 8 এ আপনি টুইগের সাহায্যে এটি করতে পারেন:

{{ url('<current>') }}

উদাহরণ:

<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>

থেকে: https://www.drupal.org/docs/8/theming/twig/function-in-twig-templates


1
@ নিকোলা-ডি-লাজ্জারি - এর দুর্দান্ত সন্ধান করুন - এছাড়াও আপনার উত্তরগুলি ভিউতেও কাজ করে। {{ url('<current>') }}প্রতিস্থাপনের নিদর্শনগুলির অধীনে তালিকাভুক্ত না হলেও দেখুন> ক্ষেত্রগুলি> পুনরায় লিখনের ফলাফল> লিঙ্ক পাথ গ্রহণ করে।
পিট

16

ড্রপাল 7-এ বর্তমান পাথ পাওয়ার জন্য আপনি ব্যবহার করতে পারেন current_path()তবে ড্রুপাল 8 এ আপনি ব্যবহার করেন $url = Url::fromRoute('<current>');

সূত্র: https://www.drupal.org/node/2382211


current_path()এবং drupal_get_path_alias()তারা বিভিন্ন ফাংশন।
itdarrylnorris

এই উত্তরটি হওয়া উচিত কারণ ভাষা সংস্করণটি ভাষা উপসর্গের সাথে পথ দেয়।
গিলাইম বোইস

ওপি ড্রুপাল_জেট_পাথ_লিয়াস () এর ডি 8 সমতুল্যের জন্য জিজ্ঞাসা করছে। আপনি D7 'নোড /' থেকে বর্তমানের পথটি আর কোনও বিকল্পযুক্ত পথটি ফিরে আসছেন না $ nid
majjules

9

বর্তমান পাথ (অ্যালিজেড পাথ) পেতে:

// Returns something like /about
$url = \Drupal\Core\Url::fromRoute('<current>');

বর্তমান পাথ (সিস্টেমের পাথ) পেতে:

// Returns node/1
$path = $url->getInternalPath();

7

ড্রুপাল 8 এর জন্য, আমি এটি খুঁজে পেতে সক্ষম হয়েছি এটি সবচেয়ে পরিষ্কার সমাধান:

Url::fromRoute('<current>',array(),array('absolute'=>'true'));

5
\Drupal\Core\Url::fromRoute('<current>', [], ['absolute' => 'true'])->toString()
লেম্যানমান্স


2

আপনি যদি ক্যোরিস্ট্রিংয়ের সাথেও নিখুঁত URL চান:

use Drupal\Core\Url;
// ...
Url::fromRoute('<current>', [], ['query' => \Drupal::request()->query->all(), 'absolute' => 'true'])->toString();
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.