में वर्तमान इकाई तक पहुंचें क्या वर्तमान में कस्टम बाधा वैधता में मान्य होने वाली संपत्ति की इकाई तक पहुंचने का कोई तरीका है, और यदि ऐसा है, तो कैसे? जहां तक मैं देख सकता हूं, मेरे पास केवल मूल्य तक पहुंच है (और कोई भी सेवा जो मैं इंजेक्ट करने के लिए चुन सकता हूं)।कस्टम symfony2 बाधा वैधता
उत्तर
मुझे इसकी भी आवश्यकता थी। कृपया एक पूर्ण उदाहरण नीचे लगता है:
इकाई:
<?php
namespace AppBundle\Entity\MarketPlace;
use Doctrine\ORM\Mapping AS ORM;
use Gedmo\Mapping\Annotation as Gedmo;
use AppBundle\Model\BaseCategoryClass as BaseCategory;
use AppBundle\Validator\Constraints as FMUAssert;
/**
* @ORM\Entity(repositoryClass="AppBundle\Repository\MarketPlace\ProductRepository")
* @Gedmo\Tree(type="nested")
* @FMUAssert\UnitConstraint()
*/
class Product extends BaseCategory
{
/**
* @ORM\Id
* @ORM\Column(type="integer", length=11)
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}
बाधा:
<?php
namespace AppBundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
/**
* @Annotation
*/
class UnitConstraint extends Constraint
{
public $message = 'La chaîne "%string%" contient un caractère non autorisé : elle ne peut contenir que des lettres et des chiffres.';
public function validatedBy()
{
return 'unit_validator';
}
public function getTargets()
{
return self::CLASS_CONSTRAINT;
}
}
बाधा सत्यापनकर्ता:
<?php
namespace AppBundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
class UnitConstraintValidator extends ConstraintValidator
{
public function validate($entity, Constraint $constraint)
{
exit(var_dump(get_class($entity)));
$this->context->addViolation($constraint->message, array('%string%' => $value));
}
}
और एक सेवा के रूप घोषणा:
services:
unit_validator:
class: %unit_validator.class%
tags:
- { name: validator.constraint_validator, alias: unit_validator }
मैंने जो एक्जिट वार्डम्प रखा है, वह मुझे इकाई वर्ग का नाम देता है, यह काम कर रहा है!
हाँ, एक तरीका है। Class constraint validator में दायरे में एक पूरी इकाई है।
धन्यवाद! दस्तावेज़ीकरण कुछ हद तक अस्पष्ट था इसलिए मैंने उस पकड़ को उद्धृत नहीं किया। –
@ EirikA.Johansen, क्या आप एक उदाहरण प्रदान कर सकते हैं? मैं सिम्फनी उदाहरण में वर्णित वही काम करने की कोशिश कर रहा हूं लेकिन सफलता के बिना। एक और विस्तारित उदाहरण सही होगा। –
मामले में आप संपत्ति सत्यापनकर्ता है, तो आप भी ExecutionContext के माध्यम से सत्यापनकर्ता में वस्तु मान्य पहुँच सकते हैं:
class SomeValidator extends ConstraintValidator
{
public function validate($value, Constraint $constraint)
{
$object = $this->context->getObject();
}
}
यह शून्य लौटाता है। कोई विचार क्यों? –
Ey, अच्छी तरह से है कि यह कैसे आप इकाई सत्यापित कर रहें पर निर्भर करता है। उदाहरण के लिए, मैं एक फॉर्म के माध्यम से अपनी इकाई को मान्य कर रहा हूं, ताकि कॉन्स्ट्रेंट वैलिडेटर में इकाई प्राप्त करने के लिए मुझे केवल संदर्भ रूट प्राप्त करने की आवश्यकता हो और मेरे फॉर्म से डेटा प्राप्त हो:
/**
* @Annotation
*/
class ValidDnieValidator extends ConstraintValidator
{
public function validate($value, Constraint $constraint)
{
$user = $this->context->getRoot()->getData();
- 1. वसंत 3.1 ऑटोवायरिंग कस्टम बाधा वैधता
- 2. स्प्रिंग बूट कस्टम बाधा वैधता सेवा
- 3. कस्टम वैधता
- 4. Symfony2 - बाधा
- 5. JSR303: क्लास-स्तरीय रिलेशनशिप बाधा वैधता
- 6. Symfony2, DoctrineFixturesBundle, विदेशी कुंजी बाधा
- 7. Symfony2
- 8. Symfony2 कस्टम रिपोजिटरी क्लास
- 9. symfony2 टेक्स्टफील्ड कस्टम लेबल
- 10. Symfony2: कस्टम कॉन्फ़िगरेशन रूट
- 11. कस्टम जावा बाधा लागू
- 12. symfony2 में कस्टम संग्रह टेम्पलेट्स
- 13. JSR 303 कस्टम बाधा अवहेलना
- 14. Symfony2
- 15. symfony2
- 16. (doctrine2 + symfony2) व्यापक निकालें: अखंडता बाधा उल्लंघन 1451
- 17. Symfony2
- 18. रेल 3 कस्टम वैधता कहाँ संग्रहित किया जाना चाहिए?
- 19. Symfony2
- 20. symfony2 कमांड में कस्टम मोनोलॉग लॉगिंग चैनल
- 21. Symfony2 फॉर्म दोहराया तत्व कस्टम लेबल
- 22. Symfony2 और Doctrine2: कस्टम एनोटेशन बनाएं
- 23. Symfony2 कस्टम इवेंट प्रेषक और श्रोता
- 24. पृष्ठभूमि में कस्टम Symfony2 कमांड कैसे चलाएं
- 25. कस्टम निर्देशिका से लोड Symfony2 अनुवाद
- 26. Django कस्टम अद्वितीय एक साथ बाधा
- 27. ASP.net MVC कस्टम मार्ग हैंडलर/बाधा
- 28. धाराप्रवाह NHibernate 3 uniquekey कस्टम बाधा नाम
- 29. रेल 3 वैधता और i18n
- 30. Symfony2
बढ़िया! बस एक छोटी टिप्पणी: आप 'var_dump' के बजाय' डंप 'का भी उपयोग कर सकते हैं। यह आउटपुट को बहुत अच्छी तरह से स्वरूपित और स्टाइल दिखाता है। – cezar