বর্তমান জুমলা URL টি পান


25

নিম্নলিখিত কোডটি জুমলা ১.6 এ কাজ করে তবে এটি একটি কঠোর মান ত্রুটিটি 3.x এ ছুঁড়েছে:

কড়া মানদণ্ড: কেবলমাত্র ভেরিয়েবলগুলি রেফারেন্স দ্বারা নির্ধারিত হওয়া উচিত

    //Get the full URL for sharing purposes
    $uri = & JFactory::getURI();
    $absolute_url = $uri->toString();

    <?php echo $absolute_url; ?>

জুমলা ৩.০ এর ত্রুটি ছাড়াই কোডটি কীভাবে কাজ করতে পারি?


BTW। এটি জুমলা সংস্করণ নয় পিএইচপি সংস্করণ দ্বারা নির্ভর করে। রেফারেন্স অনুসারে ভেরিয়েবলগুলি নির্ধারণ করা পিএইচপি
টুরসন

3
শুধু কারো যদি এই জন্য একটি উত্তর আলোচনা করা হয়েছে, একটি নোট পেতে পূর্ণ URL- এ না ব্যবহার JUri::current()যেমন কোনো কোয়েরি পরামিতি ফিরে আসবে না। নীচে গ্রহণযোগ্য উত্তরে যা বর্ণিত হয়েছে তা কেবল ব্যবহার করুন: joomla.stackexchange.com/a/4295/168
লড্ডার

এপি ডকটি দেখার জন্য সেরা api.joomla.org/cms-3/class/Joomla.CMS.Uri.Uri.html
অনন্ত

উত্তর:


36

হালনাগাদ

মূল প্রশ্নের উত্তর হ'ল: জেফ্যাক্টরি :: getUri () অবচয় করা হয়েছে, সরাসরি যুুরি ব্যবহার করুন:

<?php 
$uri = JUri::getInstance(); 
echo $uri->toString();

// or simpler:

echo JUri::getInstance();
?>

কঠোর মান ত্রুটির কারণে হয় &আগে JFactory::getURI();। আপনি নীচে সম্পর্কে আরও তথ্য পেতে পারেন।


মূল উত্তর

& মুছুন

//Get the full URL for sharing purposes
$uri = JFactory::getURI();
$absolute_url = $uri->toString();

<?php echo $absolute_url; ?>

পিএইচপি 5 এর সাহায্যে newঅপারেটর স্বয়ংক্রিয়ভাবে একটি রেফারেন্স দেয়, সুতরাং '&' এর আর দরকার নেই।

অফিসিয়াল পিএইচপি ম্যানুয়াল থেকে:

পিএইচপি 5 হিসাবে, নতুন অপারেটর স্বয়ংক্রিয়ভাবে একটি রেফারেন্স দেয়, সুতরাং পিএইচপি 5.3 এবং পরবর্তী সংস্করণে একটি E_DEPRECATED বার্তা এবং পূর্ববর্তী সংস্করণগুলিতে একটি E_STRICT বার্তা রেফারেন্স ফলাফল দ্বারা নতুন ফলাফল নির্ধারণ করে।

উত্স: http://php.net/manual/en/language.operators.assignment.php


আমার উত্তর দেখুন এখানে-> stackoverflow.com/questions/23702983/...
ezcodr

8

জুমলা টিউটোরিয়াল অনুসারে , আপনি এই ফাংশনটির মাধ্যমে বর্তমান ইউআরএল পেতে পারেন:

JUri::current();

4
JUri :: বর্তমান () কোয়েরি বা খণ্ড খণ্ড না করে বর্তমান অনুরোধ ইউআরআই প্রদান করে । উদাহরণস্বরূপ, আপনি নীচের ইউআরএলটি দেখুন: লোকালহোস্ট / জুমলা 3 / সূচক.এফপি / উপাদান / ব্যবহারকারী /? ভিউ = স্মরণ করিয়ে দেয় জুরি :: বর্তমান () ফিরে আসবে: লোকালহোস্ট / জুমলা 3 / সূচক.এফপি / উপাদান / ব্যবহারকারী
ফ্রিপেল

5

আপডেট: JUri এখন হ্রাস করা হয়। সঠিক উপায়টি এখন নিম্নরূপ:

$uri = Joomla\CMS\Uri\Uri::getInstance();
echo  $uri->toString();

পুরানো বার্তা যা এখন অবহেলা করা হয়েছে:

JFactory::getURI();অবচয় করা হয়। বর্তমান ইউআরএল পাওয়ার সঠিক পদ্ধতিটি হ'ল:

$uri = JUri::getInstance();
echo  $uri->toString();

0

toStringবর্তমান URL টি পেতে পদ্ধতির উপর নির্ভর করা ভুল। toStringপদ্ধতি যে জন্য বোঝানো হয় না। বর্তমান ইউআরএল পুনরুদ্ধার করতে নিম্নলিখিতটি আরও ভাল, ক্লিনার এবং ভবিষ্যতের প্রমাণ পদ্ধতির:

$objJURI = JFactory::getURI();
$strQuery = '';
if (!empty($objJURI->getQuery()))
    $strQuery = '?'.$objJURI->getQuery();
$strFragment = '';
if ((!empty($objJURI->getFragment())) && ($objJURI->getFragment() != '#'))
    $strFragment = $objJURI->getFragment();
$currentURL = $objJURI->current().$strQuery.$strFragment;

নোট করুন যে getFragmentপদ্ধতিটি নম্বর সাইন করার পরে অংশটি ফিরে আসবে, তবে এমন একটি কোর বাগ রয়েছে যা এটি এটি করা থেকে বিরত রাখে।


এটা ভুল. এটি প্রদর্শিত হবে index.php&option=com_foo&view=bar। এটি ?পরে হওয়া উচিতindex.php
লড্ডার

2
এটি স্ট্রিং ব্যবহার করার জন্য একেবারে বৈধ। এটি একটি সর্বজনীন পদ্ধতি এবং নিজেই জুড়ি শ্রেণি দ্বারা ভারী ব্যবহৃত হয়। এমনকি পদ্ধতির মন্তব্যতে "সম্পূর্ণ ইউরি স্ট্রিং প্রদান করে" says জেফ্যাক্ট্রি :: getUri () ব্যবহার করে; অবচয় করা হয়েছে এবং অবশ্যই "আরও ভুল"।
ফ্রুপেল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.