2015-01-26 35 views
5

मैं हमेशा की तरह संपर्क जानकारी के साथ एक users मेज है कि एक Laravel 4 एप्लिकेशन लिख रहा हूँ। मेरी users मॉडल में, ईमेल के लिए मेरी मान्यता 'email'=>'required|email|unique:users', जो ठीक जब नए उपयोगकर्ताओं दर्ज की काम करता है निर्दिष्ट करता है।Laravel 4 सत्यापन ईमेल अद्वितीय बाधा

मेरे सवाल यह है कि उपयोगकर्ता संपादित form-- जब फ़ॉर्म सबमिट किया जाता है, मैं अद्वितीय ईमेल बाधा के लिए करना चाहते हैं संभाल करने के लिए एक ही निकाल दिया जा अगर यह वर्ष email-- के रूप में नहीं तो आप कर सकते हैं 'एक ही नहीं है अपनी प्रोफ़ाइल को सहेजने के लिए, क्योंकि ईमेल (आपका ईमेल) पहले ही उपयोग नहीं कर रहा है।

धन्यवाद

उत्तर

6

तीसरे पैरामीटर बाहर करने के लिए इस प्रयास करें ique नियम आपको अनदेखा करने के लिए रिकॉर्ड की एक आईडी निर्दिष्ट करने की अनुमति देता है। जब आप किसी उपयोगकर्ता को संपादित कर रहे होते हैं, तो आप अपने अद्वितीय सत्यापन नियम को उस उपयोगकर्ता की आईडी द्वारा निहित मान को अनदेखा करना चाहते हैं जिसे आप संपादित कर रहे हैं।

'email'=>'required|email|unique:users,email,'.$userId 

आप सत्यापन नियम here पर दस्तावेज़ देख सकते हैं।

trickiest हिस्सा आप में चलाने जाएगा पता लगाना है कि आपका नियम संपादित करने के लिए उपयोगकर्ता आप संपादित कर रहे हैं की पहचान प्रदान करने के लिए। यह सब इस बात पर निर्भर करता है कि आपके नियम कैसे स्थापित किए गए हैं और आप अपना सत्यापन कहां कर रहे हैं।

+0

आप कर सकते हैं हमेशा 'प्रमाणीकरण :: उपयोगकर्ता concat() -> id' क्योंकि उपयोगकर्ता को रिकॉर्ड – Rafael

+2

संपादित करने के लिए साइन इन किया जाएगा आईडी प्राप्त करना मुश्किल भाग नहीं है। यह इस नियम में आईडी को इंजेक्ट कर रहा है कि कुछ लोगों के पास समस्याएं हैं, केवल उनके नियमों को परिभाषित और उपयोग करने के आधार पर। उदाहरण के लिए, है कि आपके नियम मॉडल पर एक स्थिर विशेषता के रूप में परिभाषित कर रहे हैं, तो आप नियम में प्लेसहोल्डर के कुछ प्रकार, और फिर एक विधि के लिए एक विशिष्ट आईडी के साथ कि प्लेसहोल्डर बदलने के लिए, [इस] में वर्णित के रूप आवश्यकता होगी (http://stackoverflow.com/questions/28054979/laravel-4-form-validation-should-be-unique-on-update-form-but-not-if-current/28056267#28056267) प्रश्न/उत्तर। – patricus

+1

मैं आपका पॉइंट देखता हूं लेकिन उस स्थिति में सत्यापन नियमों को पूरा करने के लिए आईडी को पास करने के लिए ओपी तक होगा। उम्मीद है कि वह ऐसा करेगा। लेकिन ऐसा लगता है कि यह रास्ता तय करने का तरीका है, जिस तरह से उसने इसे स्थापित किया। – Rafael

1

अनोखा मान्यता सिंटेक्स

unique:table,column,except,idColumn

संयुक्त राष्ट्र के वर्तमान ईमेल

unique:'users', 'email', Auth::user()->email

+0

@ rafael-- धन्यवाद लेकिन वह वास्तव में मैं क्या मतलब नहीं है। यदि 'joe @ test.com' एक नया खाता पंजीकृत करता है, तो सत्यापन ठीक काम करता है। यदि वह फिर एक संपादन फॉर्म जमा करता है और * कोई * अपना ईमेल नहीं बदलता है, तो ईमेल विफल होने के बाद सत्यापन विफल रहता है, इसलिए यह अद्वितीय नहीं है। – user101289

+0

माइग्रेशन और डेटाबेस में आपको ईमेल फ़ील्ड को ** विशिष्ट रूप से अनुक्रमित ** होना चाहिए। इस तरह डेटाबेस डेटाबेस इस तरह की चीज को संभाल सकता है, न कि वैधकर्ता। '$ टेबल> अद्वितीय ('ई-मेल');' [Laravel स्कीमा बिल्डर] (http://laravel.com/docs/4.2/schema#adding-indexes) – Rafael

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