नहीं, यह वर्तमान में संभव नहीं है।
इसका वाईएएमएल या एक्सएमएल या यहां तक कि सेवा परिभाषाओं के साथ कुछ लेना देना नहीं है। वैलिडेटर घटक स्वयं सत्यापन नियम पढ़ता है - जैसा कि आप देख सकते हैं, संरचना सेवा परिभाषाओं के मुकाबले काफी अलग है। दुर्भाग्यवश, यह बाधाओं में पैरामीटर को प्रतिस्थापित नहीं करता है।
मुख्य तर्क \Symfony\Component\Validator\Mapping\Loader\YamlFileLoader
में रहता है जो \Symfony\Component\Validator\ValidatorBuilder::getValidator
द्वारा बनाया गया है।
validator.builder
सेवा के अधिभावी परिभाषा: आप ऐसा करके बना सकते हैं।
यह %validator.builder.factory.class%::createValidatorBuilder
का प्रयोग कर बनाया है, लेकिन जैसा कि आप पैरामीटर बैग किसी भी तरह प्राप्त करने के लिए, वहाँ पर्याप्त निर्भरता नहीं है - वर्ग कारखाने प्रयोग में, कारखाने सेवा नहीं है।
- नई कक्षा बनाना, जो
ValidatorBuilder
बढ़ाता है।
इसे पैरामीटर बैग को कन्स्ट्रक्टर या सेटटर के माध्यम से लेना चाहिए। इसे यहां पारित करने के लिए चरण (1) में कॉन्फ़िगर किया जाना चाहिए।
यह कक्षा किसी अन्य वर्ग के फ़ाइल लोडर (3 देखें) बनाएगी, उस पैरामीटर बैग को भी पास करेगी।
YamlFileLoader
और YamlFilesLoader
के लिए नई कक्षाएं बनाना। प्रत्येक प्रारूप के लिए अतिरिक्त 2 जिसे आप समर्थन देना चाहते हैं।
यह अतिरिक्त रूप से कन्स्ट्रक्टर में पैरामीटर बैग लेगा और कुछ कार्यक्षमता को ओवरराइड करेगा। उदाहरण के लिए, मुझे लगता है कि सभी पैरामीटर हैंडलिंग newConstraint
विधि में किया जा सकता है - विकल्प के माध्यम से पुनरावृत्त करें, पैरामीटर हल करें, फिर प्रतिस्थापित विकल्पों के साथ पैरेंट विधि को कॉल करें।
ऐसा नहीं है कि Symfony (इस यूज-केस में संभवतः नहीं इतनी अच्छी तरह से) ऐसे ही बढ़ाया जा सकता है अच्छा है, लेकिन मुझे लगता है कि यह आसान हो बस कस्टम बाधा सत्यापनकर्ता के साथ अपने स्वयं बाधा लिखने के लिए है, जो कि इंजेक्षन होगा इसमें पैरामीटर
वैलिडेटर सेवा के चारों ओर एक रैपर पर भी विचार करें - यदि आपको केवल सत्यापन संदेशों को प्रतिस्थापित करने की आवश्यकता है, तो आप validator
सेवा को मूल में इंजेक्ट करने के लिए प्रतिस्थापित कर सकते हैं। अधिक जानकारी के लिए http://symfony.com/doc/current/service_container/service_decoration.html देखें।
स्रोत
2017-03-14 22:50:16
मेरे पास एक ही प्रश्न था (और इसे पहले नहीं मिला) जिसमें कुछ रोचक टिप्पणियां हैं (लेकिन अभी तक कोई जवाब नहीं है): http://stackoverflow.com/questions/42486647/use-parameters-in- प्रमाणीकरण –