2010-02-11 11 views
6

मुझे फॉर्म सत्यापन नियमों का एक सेट मिला है जिसे मैंने jquery validator प्लगइन के साथ लिखा था। चूंकि मुझे सर्वर पक्ष पर एक ही सत्यापन दोहराना है, मैंने सोचा कि PHP में मेरे नियमों को फिर से लिखना अच्छा नहीं होगा। यदि नियम सरल थे field=>rulename=>value मैं उन्हें सिर्फ JSON के रूप में स्टोर कर सकता हूं और उन्हें PHP सरणी में डीकोड कर सकता हूं। दुर्भाग्यवश, कुछ नियम अन्य क्षेत्रों पर निर्भर हैं या मूल्यों की गणना की गई है।php अनुवादक के लिए jquery?

क्या जावास्क्रिप्ट/jquery से PHP तक field=>rulename=>value=function{} अनुवाद करने का एक सामान्य तरीका है? या, सर्वर पक्ष पर jquery चलाने के लिए कोई तरीका है और फिर परिणाम PHP को पास करते हैं?

नियमों के कुछ का एक नमूना:

 rules: { 
      title: {required:true, minlength:5}, 
      description: {required:true, minlength:5}, 
      event_type_id: "required", 
      ev_start: { dateCan: true, required: true}, 
      ev_end:{ dateCan: true, 
        minDate: "input[name='ev_start']" 
      }, 
      ev_starttime:{ 
       required: 
        function(element){ 
         return $("input[name='allday']:unchecked") 
        }, 
       time: true, 
       maxTime: { 
        depends: function(element) { 
           return $("input[name='ev_endtime']:filled") 
             && $("input[name='ev_start']").valid() 
             && $("input[name='ev_end']").valid() 
             && $("input[name='ev_start']").val()==$("input[name='ev_end']").val() 
          }, 
        param: "input[name='ev_endtime']" 
       } 
      }, 
     //etc... 
     } 

उत्तर

3

मुझे लगता है कि आप सही रास्ते पर हैं, लेकिन मुझे नहीं लगता कि आप इसे के रूप में आसान के रूप में आप उम्मीद कर लगाने के लिए जा रहे हैं है। मुझे पूर्व-निर्मित फ़ंक्शन से अवगत नहीं है जो इस विशिष्ट उद्देश्य के लिए डेटा सेट को सटीक रूप से पार्स और सुधार सकता है।

यदि मैं ऐसा करने जा रहा था तो मैं अपने सत्यापन सेट को एक बहुआयामी संबद्ध सरणी में सेट करूँगा जिसमें PHP में आवश्यक जानकारी थी।

इसके बाद आपको यह तय करना होगा कि जावास्क्रिप्ट से बात कैसे करें। यदि आप पृष्ठ में अपनी जेएस इनलाइन लोड कर रहे हैं तो मैं केवल PHP सरणी के माध्यम से PHP से लूप का उपयोग करता हूं और आवश्यकतानुसार आपके जेएस नियमों का निर्माण करता हूं। यदि आप बाहरी फ़ंक्शन कॉल का उपयोग कर रहे हैं तो JSON सरणी को एन्कोड करता है और इसे एक अनुवादक फ़ंक्शन पर पास करता है जो JSON सरणी को पार करता है और आपके JQuery की अपेक्षा करता है कि इसे सुधारता है।

संपादित स्पष्ट करने के लिए:

आप अन्य दिशा जाने के लिए और जे एस से पीएचपी करने के लिए दे सकते हैं, लेकिन यह जिस तरह से मैं सुझाव है कि आप आसानी से और बस अन्य जे एस या JQuery पुस्तकालयों बाहर स्वैप करने की क्षमता दे देंगे कर अपना अनुवादक बदलें। जेएस से PHP तक जाकर आपको दोनों पक्षों को बदलना होगा यदि आपने कभी जेएस वैधकर्ताओं को बदलने का फैसला किया है। यदि आप बहु वेबसाइट या बहु डेवलपर कोडिंग करने की योजना बना रहे हैं तो यह केवल एक सामान्य PHP सरणी कॉन्फ़िगरेशन सीखना और जेएस के लिए अनुवादक लिखना बेहतर होगा।

+0

मुझे लगता है कि मैं PHP में नियम लिख सकता हूं और फिर उन्हें वैध जावास्क्रिप्ट में पार्स कर सकता हूं, लेकिन मैं वास्तव में दूसरी दिशा में जाऊंगा। – dnagirl

+1

@dnagirl - मेरी एकमात्र चिंता यह होगी कि PHP में जावास्क्रिप्ट से जानकारी पास करना अधिक कठिन है क्योंकि यह ज्यादातर पुल सिस्टम का उपयोग करता है, आपको PHP के साथ डेटा का अनुरोध करना होगा। यह इस उदाहरण में काम कर सकता है लेकिन एक और सार्वभौमिक दृष्टिकोण के लिए मैं व्यक्तिगत रूप से इसे दूसरी दिशा में करूँगा। अब से 6 महीने की कल्पना करें कि आप एक नए सत्यापनकर्ता का उपयोग करने का निर्णय लेते हैं, आपको पूरे गेम को बदलने की ज़रूरत नहीं है, आप केवल जेएस ट्रांसलेटर बदलते हैं ... PHP उस भारी परिवर्तन को बदलने वाला नहीं है = पी – Shane

+0

वैधता के बारे में अच्छा बिंदु PHP से बदलने की अधिक संभावना है। – dnagirl

0

चूंकि सत्यापन नियम काफी सरल हैं, इसलिए आप अपना खुद का लिख ​​सकते हैं और इसे एक फ़ंक्शन के रूप में सहेज सकते हैं। बस इसे पैरामीटर में मान स्वीकार करें, फिर सही या गलत लौटाएं।

फॉर्म भरने वाले आपके PHP कोड में, आपको केवल फ़ील्ड मान को अपने सत्यापन फ़ंक्शन में पास करने की आवश्यकता होगी, और जांचें कि यह सही या गलत है या नहीं।

बैक-एंड पक्ष में मान्य होना महत्वपूर्ण है, क्योंकि जावास्क्रिप्ट आधारित सत्यापन आसानी से बंद किया जा सकता है।

1

मैं विपरीत करने की अनुशंसा करता हूं: कुछ PHP- आधारित सत्यापन कार्यों को जावास्क्रिप्ट में परिवर्तित करें। स्वचालित रूप से परिवर्तित फ़ंक्शन लचीले होने वाले नहीं होते हैं, और इसलिए हाथ-कोडित फ़ंक्शंस के रूप में बहुमुखी या मजबूत होते हैं, और आप वास्तव में सर्वर-साइड पर सबसे अच्छा होना चाहते हैं। सबसे खराब स्थिति परिदृश्य यदि आप कुछ PHP-> जेएस सत्यापन को भरते हैं तो यह है कि उपयोगकर्ता को बताया गया है कि उनका ईमेल पता गलत है, इससे पहले कि उपयोगकर्ता को सर्वर पर एक राउंड ट्रिप मिल जाए।

+0

@nickf - हालांकि यह संभव है कृपया तर्क के लिए मेरी प्रतिक्रिया में संपादन देखें कि मैं ऐसा करने से क्यों बचूंगा। यह बहुत सीमित है और अच्छी तरह से स्केल नहीं करता है। – Shane

1

मुझे लगता है कि आप क्या करने की कोशिश कर रहे हैं (PHP कोड रूपांतरण के लिए जावास्क्रिप्ट) बहुत व्यवस्थित नहीं है और मुझे संदेह है कि आपको तैयार समाधान मिल जाएगा।

क्या इस दृष्टिकोण के बारे में:

  1. क्या क्षेत्रों सत्यापन सहित रूप में होना चाहिए के लिए कुछ विन्यास बनाएँ।
  2. एक PHP फ़ंक्शन बनाएं जो HTML + जावास्क्रिप्ट फ़ॉर्म उत्पन्न करता है जिसमें कॉन्फ़िगरेशन के आधार पर सत्यापन शामिल है।
  3. एक PHP फ़ंक्शन बनाएं जो कॉन्फ़िगरेशन के आधार पर फ़ॉर्म इनपुट को मान्य करता है।
+0

मैं इस समाधान से सहमत हूं - एक सामान्य कॉन्फ़िगरेशन जो क्लाइंट पर सर्वर पर जेएस में अनुवादित हो जाता है और जेएस कोड को फ्लाई पर PHP में कनवर्ट करने से कहीं अधिक सरल है – guigouz

संबंधित मुद्दे