drupal_goto (request_uri ()) मेरे '?', '=' और 'ur' को url में बदल देता है


11

मुझे एक ही प्रकार के URL से example.com/node/add/dispo?arg1=1&arg2=2 वाले पृष्ठ से उपयोगकर्ता को पुनर्निर्देशित करना होगा। लेकिन जब मैं बस एक ऐसा करता हूं drupal_goto(request_uri());, तो यह मेरे उपयोगकर्ता को example.com/node/add/dispo%25F%CC आदि पर रीडायरेक्ट करता है।

मैं एक str_replace की कोशिश की, लेकिन यह काम नहीं किया।

क्या आपके पास कोई वर्कअराउंड होगा?

जवाबों:


32

drupal_goto()फ़ंक्शन $optionsपर पारित होने के लिए एक पैरामीटर को स्वीकार करता है url()। आप इस तरह से एक क्वेरी स्ट्रिंग पास कर सकते हैं:

$options = array('query' => array('foo' => 'bar'));
drupal_goto('path', $options);

यह उदाहरण आगे / पथ पर होगा? फू = बार


मुझे लगता है कि यह हेडर (स्थान?
ग्रेगरी कपुस्टिन

2
यह वास्तव में निर्भर करता है, यदि आप सभी कोड को देखते हैं तो drupal_goto()प्रदान किए गए मापदंडों के आधार पर एक URL का निर्माण होता है, जिसे वह header()स्वयं कॉल करता है। मुख्य अंतर वे होते हैं जिन्हें drupal_exit()स्क्रिप्ट के लिए एक साफ निकास देना कहा जाता है, और यदि $_GET['destination']सेट किया जाता है, तो यह उस पथ को ओवरराइड करेगा जो आप फ़ंक्शन को पास करते हैं। आम तौर पर drupal_goto()इस्तेमाल किया जाना चाहिए, लेकिन ऐसे अवसर होते हैं जब अच्छे पुराने header()अधिक उपयुक्त होते हैं। बस आप क्या करने की जरूरत पर निर्भर करता है
क्लाइव

ठीक है धन्यवाद। मैं इस एक के लिए हेडर का उपयोग करूँगा, लेकिन फिर भी, मुझे लगता है कि ड्रुपल_गेटो क्लीनर है।
ग्रेगरी कपुस्टिन

ध्यान दें कि विकल्प सरणी में नाम और मूल्य जोड़ी के साथ एक सरणी क्वेरी है। तो एक गंतव्य चर के साथ प्रवेश करने के लिए मेरा कोड इस तरह दिखता है: $ विकल्प = सरणी ('क्वेरी' => सरणी ('गंतव्य' => 'आंतरिक / डैशबोर्ड') drupal_goto ('उपयोगकर्ता', $ विकल्प));
सप्तऋषि

अद्भुत कुछ नया सीखने को मिला
ऋषभ

13

यह क्लाइव के उत्तर के समान है। यह सही है IMO, लेकिन मैं सिर्फ उस उत्तर को जोड़ना चाहता था जो आपके उपयोग के मामले 1: 1 के अनुरूप हो।

$options = array('query' => drupal_get_query_parameters());
drupal_goto(current_path(), $options);

आप drupal_goto()वर्तमान स्थान के समान स्थान पर कॉल करना चाहते थे ।

mysite.com/node/add/dispo?arg1=1&arg2=2

current_path () रिटर्न नोड / जोड़ने / प्रेषण; drupal_get_query_parameters () सभी $_GETपैरामीटर लौटाता $_GET['q']है, सिवाय इसके कि आंतरिक पथ नोड / जोड़ / फैलाव है।

जब आप कॉल करते हैं drupal_goto(), तो उपयोगकर्ता को भेजने के लिए Drupal उसी URI का पुनर्निर्माण कर सकता है।


महान, मैंने आपके उत्तर को छीन लिया क्योंकि मैंने क्लाइव का चयन किया है। आप सभी को धन्यवाद।
ग्रेगरी कपुस्टिन

0

आप भी उपयोग कर सकते हैं drupal_goto($GLOBALS['base_root'] . request_uri());

ध्यान दें कि यह वही नहीं है drupal_goto(request_uri());जहां पारित पैरामीटर urlencoded है जैसे कि यह एक आंतरिक ड्रुपल पथ है, जो वास्तव में आपके मुद्दे का स्रोत है।


-1

वास्तव में मैंने इसका उपयोग करके काम किया header("location: " . $base_path . request_uri());


3
ये गलत है। drupal_goto किसी कारण के लिए बनाया गया है जिसे आप जानते हैं।
अय्येश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.