Ejemplo n.º 1
0
 protected function beginWrapperRender(TypesRepositoryInterface $repo, DOMDocument $doc, DOMElement $parentNode, &$route)
 {
     if ($this->isOptional()) {
         $text = $doc->createTextNode('@if(isset($' . Helpers::buildRoute($route) . '))');
         $parentNode->appendChild($text);
     }
     if ($this->isArray()) {
         $last = end($route);
         $text = $doc->createTextNode('@foreach($' . Helpers::buildRoute($route) . ' as $' . Helpers::snakeCase($last) . ')');
         $parentNode->appendChild($text);
         $route = [$last];
     }
 }
Ejemplo n.º 2
0
 public function build($requestType, $rootName, $callback = NULL)
 {
     $doc = new DOMDocument("1.0", "UTF-8");
     $rootElement = $doc->createElement($rootName);
     if ($callback) {
         call_user_func_array($callback, [&$rootElement]);
     }
     $doc->appendChild($rootElement);
     $requestType = $this->repository->findTypeByName($requestType);
     if ($requestType) {
         $requestType->render($this->repository, $doc, $rootElement, [Helpers::cleanNamespace($rootName)]);
     }
     return $doc->saveXML();
 }
Ejemplo n.º 3
0
 public function render(TypesRepositoryInterface $repo, DOMDocument $doc, DOMElement $parentNode, $route)
 {
     $parentNode->nodeValue = '{{ $' . Helpers::buildRoute($route) . ' }}';
     return $doc;
 }
Ejemplo n.º 4
0
 protected function parseComplexTypes(TypesRepositoryInterface $repo)
 {
     foreach ($this->parseXPath('/xs:schema/xs:complexType') as $complex_type) {
         $name = $complex_type->getAttribute('name');
         $elementNodes = $this->parseXPath($complex_type->getNodePath() . '/xs:sequence/xs:element');
         $elements = [];
         foreach ($elementNodes as $element) {
             $elName = $element->getAttribute('name');
             $elType = NULL;
             $elComplexType = $element->getAttribute('type');
             $elSimpleType = $this->parseXPath($element->getNodePath() . '/xs:simpleType/xs:restriction', 'base');
             if ($elComplexType) {
                 $elType = $elComplexType;
             } elseif (count($elSimpleType)) {
                 $elType = $elSimpleType[0];
             } else {
                 $elType = "UnknownType";
             }
             $min_occurs = $element->getAttribute('minOccurs');
             $max_occurs = $element->getAttribute('maxOccurs');
             $elements[$elName] = new Element(['elementName' => $elName, 'type' => Helpers::cleanNamespace($elType), 'min_occurs' => $min_occurs, 'max_occurs' => $max_occurs]);
         }
         $xsd_type = new ComplexType(['name' => $name, 'elements' => $elements]);
         $repo->registerType($name, $xsd_type);
     }
 }