protected function addServices(SimpleXMLElement $xml, Config $config)
 {
     foreach ($config->getServices() as $service) {
         if (!$xml->xpath("//config:services/config:service[@id='{$service->getId()}']")) {
             $element = $xml->services->addChild("service");
             $element->addAttribute("id", $service->getId());
             $element->addAttribute("class", $service->getClass());
             if ($service->getScope()) {
                 $element->addAttribute("scope", $service->getScope());
             }
             foreach ($service->getArguments() as $argument) {
                 $serviceXml = $element->addChild("argument");
                 if (null !== $argument->getId()) {
                     $serviceXml->addAttribute("id", $argument->getId());
                 }
                 if (null !== $argument->getType() && Argument::TYPE_STRING !== $argument->getType()) {
                     $serviceXml->addAttribute("type", $argument->getType());
                 }
                 if (null !== $argument->getValue()) {
                     $serviceXml[0] = $argument->getValue();
                 }
             }
             foreach ($service->getTags() as $tag) {
                 $tagXml = $element->addChild("tag");
                 foreach ($tag->getParameters() as $name => $parameter) {
                     $tagXml->addAttribute($name, $parameter);
                 }
             }
         }
     }
 }
예제 #2
0
 protected function parseService(SimpleXMLElement $serviceXml, Config $config)
 {
     $service = new Service($serviceXml->getAttributeAsPhp("id"), $serviceXml->getAttributeAsPhp("class"), $serviceXml->getAttributeAsPhp("scope"));
     static::registerNamespace($serviceXml);
     foreach ($serviceXml->xpath(".//config:tag") as $tagXml) {
         $parameters = array();
         foreach ($tagXml->attributes() as $k => $v) {
             $parameters[$k] = $v;
         }
         $service->addTag(new Tag($parameters["name"], $parameters));
     }
     $config->addService($service);
 }
 /**
  * @param \TheliaStudio\Parser\Entity\Table[] $tables
  */
 protected function generateConfiguration(array $tables, $moduleCode)
 {
     $config = new Config();
     foreach ($tables as $table) {
         // Add loop
         $config->addLoop(new Loop($table->getLoopType(), $moduleCode . "\\Loop\\" . $table->getTableName()));
         // Add forms
         $config->addForm(new Form($table->getRawTableName() . ".create", $moduleCode . "\\Form\\" . $table->getTableName() . "CreateForm"));
         $config->addForm(new Form($table->getRawTableName() . ".update", $moduleCode . "\\Form\\" . $table->getTableName() . "UpdateForm"));
         // Add action
         $service = new Service("action." . strtolower($moduleCode) . "." . $table->getRawTableName() . "_table", $moduleCode . "\\Action\\" . $table->getTableName() . "Action");
         $service->addTag(new Tag("kernel.event_subscriber"));
         $config->addService($service);
         // Add form type
         $formType = new Service(strtolower($moduleCode) . ".form.type." . $table->getRawTableName() . "_id", $moduleCode . "\\Form\\Type\\" . $table->getTableName() . "IdType");
         $formType->addArgument(new Argument(null, Argument::TYPE_SERVICE, "thelia.translator"));
         $formType->addTag(new Tag("thelia.form.type"));
         $config->addService($formType);
     }
     return $config;
 }
예제 #4
0
 protected function generateConfig($moduleCode)
 {
     $config = new Config();
     $config->addForm(new Form(strtolower($moduleCode) . ".configuration", $moduleCode . "\\Form\\" . $moduleCode . "ConfigForm"));
     return $config;
 }