मैं एक बंडल में काम कर रहा हूं जहां उपयोगकर्ता एक फॉर्म का उपयोग करके "हास्य" बनाता है, और मैं यह जांचने की कोशिश कर रहा हूं कि उपयोगकर्ता के पास अभी भी "क्रेडिट" है। तो मैंने एक कस्टम सत्यापनकर्ता बनाया जो पिछले कॉमर्स से पूछताछ करता है और क्रेडिट पर्याप्त नहीं होने पर त्रुटि उत्पन्न करता है।सिम्फनी सत्यापन
मेरी समस्या यह है कि यदि उपयोगकर्ता "दिनांक" फ़ील्ड में गलत प्रारूप के साथ दिनांक सबमिट करता है (यानी 32-13-20122 24:05) सिम्फनी अभी भी मेरी कस्टम सत्यापन चलाने की कोशिश करता है और मुझे सभी प्रकार की त्रुटियां मिलती हैं (क्योंकि $comision->getDate()
null
है और मान्य दिनांकटाइम ऑब्जेक्ट नहीं है)।
मैं इस त्रुटि हो रही है:
clone method called on non-object
मैं भी देख सकते हैं कि $comision->getDate()
का मूल्य अपने कस्टम सत्यापनकर्ता में एक वैध datetime है, लेकिन यह मेरे लिए है कि यह बाद से मैं इस जोड़ा आवश्यक नहीं होना चाहिए लगता है तिथि संपत्ति में नियम।
यह मेरा इकाई (सरलीकृत)
/**
* @MyValidation\TotalHours()
*/
class Comision
{
/**
* @ORM\Column(type="datetime")
* @Assert\DateTime()
* @Assert\NotNull()
*/
protected $date;
/**
* @ORM\Column(type="decimal", nullable=false, scale=1)
* @Assert\NotBlank()
*/
protected $hours;
...
मेरे प्रपत्र वर्ग ...
class NewComisionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('date', DateTimeType::class, array(
'widget' => 'single_text',
'label' => 'Starting date and time',
'format' => 'dd/MM/yyyy HH:mm'
))
->add('hours', ChoiceType::class, array(
'label'=> 'How many hours',
'choices' => array(
'1:00' => 1,
'1:30' => 1.5,
'2:00' => 2,
'2:30' => 2.5,
'3:00' => 3
)
))
...
और मेरे cutom सत्यापनकर्ता कि पिछले comisions उपयोगकर्ता अभी भी है, तो लगता है की जांच करता है "क्रेडिट"
public function validate($comision, Constraint $constraint)
{
$from = clone $comision->getDate();
$from->modify('first day of this month');
$to = clone $comision->getDate();
$to->modify('last day of this month');
$credit = $this->em->getRepository("ComisionsBundle:Comision")->comisionsByDate($comision,$from, $to);
...
फिर डेटा ट्रांसफार्मर की जांच में
https://symfony.com/doc/current/form/data_transformers.html
और अगर तिथि मान्य है और नहीं तो एक त्रुटि फेंक:
आप तिथि के लिए सत्यापन क्यों नहीं जोड़ते? https://symfony.com/doc/current/reference/constraints/Date.html या शायद आपके कस्टम सत्यापनकर्ता – kunicmarko20
में मैंने किया (मैं इसे जोड़ने के लिए अपना प्रश्न संपादित कर रहा हूं) लेकिन इसका कोई प्रभाव नहीं है। ऐसा लगता है कि यह सभी सत्यापन नियम चलाता है भले ही डेटा-ट्रांसफॉर्म के बाद कोई वैध डेटाटाइम न हो। –