예제 #1
0
 public function serialize(VisitorInterface $visitor, $data, $type, &$handled)
 {
     if ($data instanceof ConstraintViolationList) {
         if ($visitor instanceof XmlSerializationVisitor) {
             $handled = true;
             if (null === $visitor->document) {
                 $visitor->document = $visitor->createDocument();
             }
             foreach ($data as $violation) {
                 $this->serialize($visitor, $violation, null, $visited);
             }
         }
     } else {
         if ($data instanceof ConstraintViolation) {
             if ($visitor instanceof XmlSerializationVisitor) {
                 $handled = true;
                 if (null === $visitor->document) {
                     $visitor->document = $visitor->createDocument(null, null, false);
                     $visitor->document->appendChild($violationNode = $visitor->document->createElement('violation'));
                     $visitor->setCurrentNode($violationNode);
                 } else {
                     $visitor->getCurrentNode()->appendChild($violationNode = $visitor->document->createElement('violation'));
                 }
                 $violationNode->setAttribute('property_path', $data->getPropertyPath());
                 $violationNode->appendChild($messageNode = $visitor->document->createElement('message'));
                 $messageNode->appendChild($visitor->document->createCDATASection($data->getMessage()));
                 return;
             } else {
                 if ($visitor instanceof GenericSerializationVisitor) {
                     $handled = true;
                     $violation = array('property_path' => $data->getPropertyPath(), 'message' => $data->getMessage());
                     if (null === $visitor->getRoot()) {
                         $visitor->setRoot($violation);
                     }
                     return $violation;
                 }
             }
         }
     }
     return;
 }
예제 #2
0
 public function serialize(VisitorInterface $visitor, $data, $type, &$visited)
 {
     if (!$data instanceof \DateTime) {
         return;
     }
     if ($visitor instanceof XmlSerializationVisitor) {
         if (null === $visitor->document) {
             $visitor->document = $visitor->createDocument(null, null, true);
         }
         $visited = true;
         return $visitor->document->createTextNode($data->format($this->format));
     } else {
         if ($visitor instanceof GenericSerializationVisitor) {
             $visited = true;
             return $data->format($this->format);
         } else {
             if ($visitor instanceof YamlSerializationVisitor) {
                 $visited = true;
                 return Inline::dump($data->format($this->format));
             }
         }
     }
 }
예제 #3
0
 public function serialize(VisitorInterface $visitor, $data, $type, &$handled)
 {
     if ($data instanceof Form) {
         if ($visitor instanceof XmlSerializationVisitor) {
             $handled = true;
             if (null === $visitor->document) {
                 $visitor->document = $visitor->createDocument(null, null, false);
                 $visitor->document->appendChild($formNode = $visitor->document->createElement('form'));
                 $visitor->setCurrentNode($formNode);
             } else {
                 $visitor->getCurrentNode()->appendChild($formNode = $visitor->document->createElement('form'));
             }
             $formNode->setAttribute('name', $data->getName());
             $formNode->appendChild($errorsNode = $visitor->document->createElement('errors'));
             foreach ($data->getErrors() as $error) {
                 $errorNode = $visitor->document->createElement('entry');
                 $errorNode->appendChild($this->serialize($visitor, $error, null, $visited));
                 $errorsNode->appendChild($errorNode);
             }
             foreach ($data->getChildren() as $child) {
                 if (null !== ($node = $this->serialize($visitor, $child, null, $visited))) {
                     $formNode->appendChild($node);
                 }
             }
             return;
         } else {
             if ($visitor instanceof GenericSerializationVisitor) {
                 $handled = true;
                 $isRoot = null === $visitor->getRoot();
                 $form = $errors = array();
                 foreach ($data->getErrors() as $error) {
                     $errors[] = $this->serialize($visitor, $error, null, $visited);
                 }
                 if ($errors) {
                     $form['errors'] = $errors;
                 }
                 $children = array();
                 foreach ($data->getChildren() as $child) {
                     $children[$child->getName()] = $this->serialize($visitor, $child, null, $visited);
                 }
                 if ($children) {
                     $form['children'] = $children;
                 }
                 if ($isRoot) {
                     $visitor->setRoot($form);
                 }
                 return $form;
             }
         }
     } else {
         if ($data instanceof FormError) {
             $handled = true;
             $message = $this->translator->trans($data->getMessageTemplate(), $data->getMessageParameters(), 'validators');
             if ($visitor instanceof XmlSerializationVisitor) {
                 if (null === $visitor->document) {
                     $visitor->document = $visitor->createDocument(null, null, true);
                 }
                 return $visitor->document->createCDATASection($message);
             }
             return $message;
         }
     }
     return null;
 }
 public function serialize(VisitorInterface $visitor, $data, $type, &$visited)
 {
     if (!$data instanceof Article) {
         return;
     }
     if ($visitor instanceof XmlSerializationVisitor) {
         $visited = true;
         if (null === $visitor->document) {
             $visitor->document = $visitor->createDocument(null, null, false);
         }
         $visitor->document->appendChild($visitor->document->createElement($this->element, $this->value));
     } elseif ($visitor instanceof JsonSerializationVisitor) {
         $visited = true;
         $visitor->setRoot(array($this->element => $this->value));
     } elseif ($visitor instanceof YamlSerializationVisitor) {
         $visited = true;
         $visitor->writer->writeln(Inline::dump($this->element) . ': ' . Inline::dump($this->value));
     }
 }