2011-09-19 12 views
7

मैं FOSUserBundle उपयोग कर रहा हूँ के लिए Symfony2, और मैं मान्य ईमेल अनोखा, मैं सिर्फ एक मान्य ईमेल इसलिए जरूरत है अगर बिना किसी उपयोगकर्ता रजिस्टर करने के लिए सक्षम होना चाहिए कई उपयोगकर्ताओं के पास एक ही ईमेल हो सकता है (मुझे पता है कि यह अजीब है, लेकिन मुझे इसकी आवश्यकता है)।Symfony2 बंडल में एक इकाई के ऊपर लिख कैसे

मुझे लगता है कि फैली FOSUserBundle एक बंडल में एक इकाई "उपयोगकर्ता" है, यह emailCanonical के स्तंभ परिभाषा के ऊपर लिख अद्वितीय पैरामीटर को खत्म करने और FormType से मान्यता को दूर करने के के लिए संभव है?

मैं अपने फॉर्मों के सत्यापन के लिए अपनी संस्थाओं और वाईएमएल मैपिंग के लिए एनोटेशन का उपयोग कर रहा हूं।

उत्तर

0

मुझे कुछ मिला, यह आंशिक रूप से के आसपास काम करता है, व्यवहार्य समाधान नहीं।

समस्या दो भागों में विभाजित है: फ़ॉर्म और मॉडल।

प्रपत्र के लिए: FOSUserBundle पंजीकरण फार्म का अनूठा बाधा के ऊपर लिख करने के लिए आप अनुप्रयोग में पंजीकरण सत्यापन समूहों को संशोधित कर सकते हैं/config/config.yml:

fos_user: 
    registration: 
    validation_groups: [YourValidationGroup] 

मॉडल के लिए: मुझे सभी मॉडल को ओवरराइट किए बिना एक अच्छा समाधान नहीं मिला है। सिद्धांत 2 स्पष्ट रूप से बताता है कि आप मैप किए गए वर्ग की संपत्ति को ओवरराइट नहीं कर सकते हैं। तो मैंने एक माइग्रेशन किया जो सिद्धांत माइग्रेशनबंडल के साथ अद्वितीय बाधा सूचकांक छोड़ देता है ... मुझे इस समाधान पर गर्व नहीं है लेकिन यह काम करता है और यह मुझे एक डुप्लिकेट ईमेल सहेजने देता है।

यदि मॉडल के लिए आपके पास बेहतर समाधान है तो संकोच नहीं करें!

4

मेरे पास कुछ हफ्ते पहले similar issue था। एकमात्र समाधान इकाई के बजाय मॉडल का विस्तार करने के लिए है:

use FOS\UserBundle\Model\User as BaseUser; 

class User extends BaseUser 

नकारात्मक पक्ष यह भी अपने प्रयोक्ता संस्था के लिए FOS उपयोगकर्ता इकाई से सब कुछ कॉपी करने के लिए है कि आप है। दूसरी ओर, आप अपनी आवश्यकताओं के लिए कार्यक्षमता समायोजित कर सकते हैं।

+0

FOS उपयोगकर्ता इकाई से ज्यादा कुछ नहीं होता है: 'सार वर्ग उपयोगकर्ता AbstractUser फैली { }' क्या आप मतलब _The नकारात्मक पक्ष यह भी अपने उपयोगकर्ता मॉडल के लिए FOS उपयोगकर्ता मॉडल से सब कुछ कॉपी करने के लिए है कि आप है, और फिर है आपकी संस्था आपके नए उपयोगकर्ता मॉडल_ का विस्तार करती है? – carbocation

+0

क्षमा करें, मुझे लगता है कि मैंने पहले प्रश्न को गलत समझा। मुझे ऐसी स्थिति थी जहां मुझे थोड़ा अधिक कस्टम एंटिटी बनाने की ज़रूरत थी। अपने स्वयं के बंडल में, मैंने नई उपयोगकर्ता इकाई बनाई जिसने FOSUserBundle से 'मॉडल \ उपयोगकर्ता' बढ़ाया और इससे सभी विधियों और चर को ओवरराइड किया। फिर मैंने नए सत्यापन नियम (एक ही इकाई में एनोटेशन के माध्यम से) बनाया जो कि विभिन्न सत्यापन समूह से संबंधित था (जैसा कि आपने अपने उत्तर में वर्णित किया है)। मेरा मूल प्रश्न यहां है: https://github.com/FriendsOfSymfony/FOSUserBundle/issues/338। यह वास्तव में एक ही मुद्दा नहीं है जैसा आपने पूछा था, लेकिन यह आपकी मदद कर सकता है। –