2010-04-12 18 views
9

के साथ URL में #part प्राप्त करें मैं सिम्फनी 1.2 के साथ काम कर रहा हूं। मुझे वस्तुओं की एक सूची के साथ एक दृश्य है। मैं उन्हें ऑर्डर कर सकता हूं, उन्हें श्रेणी के अनुसार फ़िल्टर कर सकता हूं, या अगले पृष्ठ पर जा रहा हूं (पेजिनेशन है)। सब कुछ AJAX के साथ किया जाता है, इसलिए मुझे फिर से सभी पेज लोड करने की ज़रूरत नहीं है।PHP/Symfony

जो मैं प्राप्त करना चाहता हूं वह है http://urltopage#page=1&order=title&cats=1,2 उदाहरण के लिए; इसलिए नया पृष्ठ ब्राउज़र इतिहास में सहेजा गया है, और वह इसे किसी अन्य वेब पर पेस्ट कर सकता है।

मुझे #part पाने का कोई तरीका नहीं मिला है। मुझे पता है कि केवल ब्राउज़र के लिए है, लेकिन मुझे विश्वास नहीं है कि मैं PHP के माध्यम से नहीं जा सकता। मुझे यकीन है कि एक साधारण समाधान है जो मुझे याद आ रहा है ...

बहुत बहुत धन्यवाद!

+0

यदि कई लोगों ने आपको बताया है कि आप ब्राउज़र के अलावा इसे प्राप्त नहीं कर सकते हैं, तो वे शायद सही हैं। और आप नहीं कर सकते –

उत्तर

15

आप इसे PHP के माध्यम से नहीं प्राप्त कर सकते क्योंकि यह सर्वर पर कभी प्रसारित नहीं होता है।

हालांकि, आप इसे window.location.hash के माध्यम से जावास्क्रिप्ट के साथ प्राप्त कर सकते हैं, फिर इसे AJAX के माध्यम से सर्वर पर प्रेषित कर सकते हैं।

+0

धन्यवाद, मुझे लगता है कि मुझे तब रीडायरेक्ट करना होगा – fesja

2

एंकर, जैसा कि आपने कहा था, ब्राउज़र द्वारा उपयोग की जाने वाली जानकारी है - और मानक HTT GET अनुरोध करते समय सर्वर पर नहीं भेजी जाती है।

इसका मतलब यह है आपकी PHP स्क्रिप्ट है कि जानकारी प्राप्त करने के लिए कोई रास्ता नहीं है ...


... जब तक आप कुछ जावास्क्रिप्ट आधारित जादू का उपयोग कर एक Ajax अनुरोध का उपयोग कर की तरह, कुछ additionnal पैरामीटर भेजने की कोशिश जिसमें एंकर का मूल्य, या ऐसा कुछ होगा ... लेकिन यह चीजों को करने का एक मानक तरीका नहीं होगा, और मैं यह करने की सिफारिश नहीं करता ...

0

window.location.hash है एकमात्र तरीका ("हैश"/एंकर केवल क्लाइंट-साइड है, कभी भी सर्वर द्वारा कभी भी दिखाई नहीं देता है), लेकिन कुछ भी आपको क्वेरीस्ट्रिंग में बदलाव करने से रोकता है (पैरा पार्स में कनवर्ट करना) या एक फॉर्म का उपयोग करके फॉर्म बनाना जेएस और पोस्ट पैराम में कनवर्ट करना।

यह AJAX जावास्क्रिप्ट अनुरोध हैंडलर/प्रबंधक बनाने के लिए मूल बातें है। लेकिन अंत में आपको अपना अनुरोध भेजने के लिए एक जीईटी/पोस्ट "सामान्य" यूआरएल बनाना चाहिए।

आप हैश में एक कुकी भी स्टोर कर सकते हैं, लेकिन फिर से, मैं इसे रूटिंग या डेटा पास करने के तरीके के रूप में उपयोग नहीं करता।