2012-09-21 15 views
6

मेरे पास एक लंबे पृष्ठ के निचले हिस्से में एक फॉर्म है, यदि कोई उपयोगकर्ता फॉर्म भरता है लेकिन यह पृष्ठ को मान्य नहीं करता है तो सामान्य कोडिनेटर फैशन में पुनः लोड किया जाता है:कोडिनेटर PHP - एक एंकर पॉइंट पर एक दृश्य लोड करना

$this->load->view('template',$data);

हालांकि पृष्ठ के निचले भाग में फॉर्म नीचे है, इसलिए मुझे पेज को लोड करने की आवश्यकता है जैसे आप HTML एंकर के साथ करते हैं। क्या किसी को कोडिनेटर में ऐसा करने का तरीका पता है?

मैं CodeIgniter

redirect();

समारोह का उपयोग नहीं कर सकते हैं क्योंकि यह वस्तु खो देता है और सत्यापन त्रुटियों चले गए हैं।

$this->redirect();

जो समस्या का हल है क्योंकि आप वस्तु रख: अन्य चौखटे मैं Yii की तरह उपयोग किया है आप की तरह रीडायरेक्ट समारोह कॉल कर सकते हैं।

$this->item($labs)

:

$this->index()

नियंत्रक जो एक रीडायरेक्ट के रूप में ठीक काम करता है, लेकिन एक और तरीका है जो जहां वर्तमान पृष्ठ से भरी हुई है में मान्यता त्रुटियाँ हैं भीतर

: मैं का उपयोग कर की कोशिश की है

लेकिन जब मैं इसका उपयोग करता हूं तो यह एक लूप में फंस जाता है

कोई विचार? मैंने इस सवाल को नेट पर बहुत कुछ देखा है लेकिन कोई स्पष्ट जवाब नहीं है। मैं कोडिनेटर "फ्लैश डेटा" का उपयोग कर शोध कर रहा हूं लेकिन लगता है कि यह थोड़ा अधिक है।

चीयर्स।

+0

@ "ओवरकिल" आपको ऐसा क्या लगता है? आईएमओ यह बहुत अच्छी सुविधा है, जो मुझे लगता है कि इन तरह की चीजों के लिए बिल्कुल बनाया गया है। – Prasanth

+0

क्या आप जावास्क्रिप्ट का उपयोग करने के लिए खुले हैं? –

+0

@goldenparrot शायद मैं उस कथन के साथ थोड़ा अधिक था। मेरे पास फ़्लैश डेटा के खिलाफ कुछ भी नहीं है लेकिन सोचा कि यह एक और तरीका किया जा सकता है। –

उत्तर

5

मैं व्यक्तिगत रूप से इसके लिए झुका नहीं सकता, लेकिन this thread के अनुसार यदि आप एंकर को फॉर्म के action पर जोड़ते हैं, तो यह काम करेगा।

CodeIgniter सहायक:

<?php echo form_open('controller/function#anchor'); ?> 

या वेनिला HTML:

<form method='post' action='controller/function#anchor'> 

यदि आप जावास्क्रिप्ट का उपयोग करने के लिए खुले थे, आप आसानी से एक $validation_failed चर पता लगा सकता है और उचित रूप से स्क्रॉल करें। या, बेहतर, AJAX का उपयोग करें।

दूसरा विकल्प पृष्ठ के शीर्ष के पास फ़ॉर्म को रखना है?

+0

अच्छा लगता है जोर्डन, यह काम किया! मैंने यह भी कोशिश नहीं की क्योंकि मुझे यकीन था कि यह काम नहीं करेगा। कोडिनेटर को किसी भी यूआरएल तारों को हैश "#" के साथ विभाजित करने के लिए रूट नियंत्रक में बनाया जाना चाहिए। धन्यवाद दोस्त! –

+0

@ जेम्सबिलिंग मदद करने में खुश :) –

0

ठीक है, जहां तक ​​मैं आपकी समस्या को समझता हूं, यह बैक एंड (कोडिनेटर) से संबंधित नहीं है। आप पृष्ठ के निचले हिस्से में 'व्हाट-यूजर-देख-ऑन-पेज-लोड' होने के लिए फॉर्म चाहते हैं (क्योंकि आप एंकर का उल्लेख करते हैं)।

अब, तुम क्या कर सकते है, आप अपने प्रमाणीकरण त्रुटि संदेशों के लिए सीमांकक का उपयोग कर सेट कर सकते हैं:

echo validation_errors('<div id="bottom_form_error">', '</div>'); 

jQuery ScrollTo का उपयोग करना, कार्य करें:

$(function() { $('#bottom_form_error').ScrollTo(); }); 

और, उपयोगकर्ता के लिए स्क्रॉल कर दिया जाएगा पृष्ठ के निचले हिस्से में त्रुटियां। JQuery भी शामिल करना न भूलें।

एंकर हैश खंड क्लिक अलग है - यह गति पर स्क्रॉल कर रहा है।

मुझे उम्मीद है कि आप यही चाहते हैं।


पीएस मैं इस लाइन के नीचे जो कहा है उसे अनदेखा कर रहा हूं:

क्या किसी को कोडिनेटर में यह कैसे करना है?

जैसा कि मुझे लगा कि यह वास्तव में प्रश्न के लिए प्रासंगिक नहीं है।

+0

टिप्पणी सत्यापन से संबंधित है। लेकिन, मुझे लगता है कि अजीज़ ने वास्तव में यह जानने के लिए कहा कि क्या वह स्क्रॉल करने के लिए जावास्क्रिप्ट का उपयोग कर सकता है। यहां तक ​​कि अगर अजीज़ ने नहीं किया, तो मुझे लगता है कि यह एक वैध सवाल है: क्या ओपी वैधता त्रुटियों पर स्क्रॉल करने के लिए जावास्क्रिप्ट का उपयोग करना चाहता है, अगर फॉर्म नीचे है? यदि हां, तो यह करने का एक तरीका है। – Prasanth

+0

धन्यवाद लेकिन मुझे यह सब जेएस के साथ कवर किया गया है। क्या होगा यदि उपयोगकर्ता के पास जेएस नहीं था जो सवाल था। जिसमें यह कोडलाइन के बारे में है, जो पृष्ठ को सही स्थान पर पुनः लोड करना है, जो जेएस अक्षम होने पर केवल एंकर टैग के साथ हासिल किया जाता है। यद्यपि कि आपकी इस सहायता के लिए धन्यवाद! –