Quellcode durchsuchen

Merge branch 'master' of ssh://200.50.168.30:222/VendorSoftwareFlowdat3/TemplateBundle

Luciano Andrade vor 7 Jahren
Ursprung
Commit
ad4a8cd0b8
4 geänderte Dateien mit 65 neuen und 42 gelöschten Zeilen
  1. 12 11
      Command/RenderTemplateCommand.php
  2. 6 0
      README.md
  3. 46 28
      Services/TemplateService.php
  4. 1 3
      composer.json

+ 12 - 11
Command/RenderTemplateCommand.php

@@ -21,16 +21,17 @@ class RenderTemplateCommand extends ContainerAwareCommand
             ->addOption('filename', null, InputOption::VALUE_OPTIONAL, 'Template output file')
             ->addOption(
                 'parameter',
-                null, 
-                InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 
+                null,
+                InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY,
                 'Array with template parameters. e.g., --parameter=key1:value1 --parameter=key2:value2'
             )
             ->addOption(
                 'dump',
-                'd', 
-                InputOption::VALUE_NONE, 
+                'd',
+                InputOption::VALUE_NONE,
                 'Dump template content'
-            )    
+            )
+            ->addOption('engine', null, InputOption::VALUE_OPTIONAL, 'Render engine. e.g. twig|dwoo', 'twig')
         ;
     }
 
@@ -52,14 +53,14 @@ class RenderTemplateCommand extends ContainerAwareCommand
         try {
             /* @var $templateService TemplateService */
             $templateService = $this->getContainer()->get('template.template_service');
-            $filename = $templateService->renderTemplate($name, $parameters, $input->getOption('filename'));
+            $filename = $templateService->renderTemplate($name, $parameters, $input->getOption('filename'), $input->getOption('engine'));
             if (!is_null($filename)) {
                 $output->writeln("Template successfully generated! File: <info>{$filename}</info>");
-                
+
                 if ($input->getOption('dump')) {
                     $output->writeln(file_get_contents($filename));
                 }
-                
+
             } else {
                 $output->writeln('<error>Template not found</error>');
             }
@@ -67,11 +68,11 @@ class RenderTemplateCommand extends ContainerAwareCommand
             $output->writeln(sprintf('<error>%s</error>', $ex->getMessage()));
         }
     }
-    
+
     /**
      * @param InputInterface $input
      * @param OutputInterface $output
-     * 
+     *
      * @return array
      */
     public function getParameters(InputInterface $input, OutputInterface $output)
@@ -95,7 +96,7 @@ class RenderTemplateCommand extends ContainerAwareCommand
                 $parameters[trim($pieces[0])] = trim($pieces[1]);
             }
         }
-        
+
         return $parameters;
     }
 

+ 6 - 0
README.md

@@ -20,6 +20,12 @@ composer.json:
 },
 ```
 
+Se requiere la librería dwoo para renderizar templates .tpl
+
+```php
+composer require "dwoo/dwoo":"dev-master"
+```
+
 app/AppKernel.php:
 
 ```php

+ 46 - 28
Services/TemplateService.php

@@ -8,16 +8,16 @@ use TemplateBundle\Entity\Template;
 
 class TemplateService
 {
-    
+
     const TEMPLATE_PATH = '/tmp/flowdat/templates';
-    
+
     /**
      * @var EntityManagerInterface
      */
     private $entityManager;
-    
+
     /**
-     * @var EntityRepository 
+     * @var EntityRepository
      */
     private $templateRepository;
 
@@ -30,61 +30,79 @@ class TemplateService
         $this->entityManager = $entityManager;
         $this->templateRepository = $entityManager->getRepository('TemplateBundle:Template');
     }
-    
+
     /**
      * @param string $name
-     * 
+     *
      * @return Template
      */
     public function getTemplateByName($name)
     {
         return $this->templateRepository->findOneByName($name);
     }
-    
+
     /**
      * @param string $name
      * @param array $params
      * @param string $filename
-     * 
+     * @param string $engine
+     *
      * @return string
      */
-    public function renderTemplate($name, $params = array(), $filename = null)
+    public function renderTemplate($name, $params = array(), $filename = null, $engine = 'twig')
     {
         $content = null;
         $template = $this->getTemplateByName($name);
 	$params = array('em' => $this->entityManager) + $params;
         if (!is_null($template)) {
-            $content = $this->render($template, $params);
-	    var_dump($content);
+            $content = $this->render($template, $params, $engine);
+    	    var_dump($content);
             $filename = $this->createFile($content, $filename);
-	}else{
-		throw new \Exception ("Template $name not found"); 
-	}
-        
+    	} else {
+    		throw new \Exception("Template {$name} not found");
+    	}
+
         return $filename;
     }
-    
+
     /**
      * @param Template $template
      * @param array $params
-     * 
+     * @param string $engine
+     *
      * @return string
      */
-    public function render($template, $params = array())
+    public function render($template, $params = array(), $engine = 'twig')
     {
-        $loader = new \Twig_Loader_Array(array(
-            $template->getName() => $template->getContent()
-        ));
-        $twig = new \Twig_Environment($loader, array(
-            'cache' => false,
-        ));
-        return $twig->render($template->getName(), $params);
+        if ($engine == 'twig') {
+            $loader = new \Twig_Loader_Array(array(
+                $template->getName() => $template->getContent()
+            ));
+            $twig = new \Twig_Environment($loader, array(
+                'cache' => false,
+            ));
+
+            $content = $twig->render($template->getName(), $params);
+        } elseif ($engine == 'dwoo') {
+            $core = new \Dwoo\Core();
+
+            $tpl = new \Dwoo\Template\Str($template->getContent());
+
+            $data = new \Dwoo\Data();
+            $data->setData($params);
+
+            $content = $core->get($tpl, $data);
+        } else {
+            throw new \Exception("Invalid {$engine} engine value");
+        }
+
+        return $content;
     }
-    
+
     /**
      * @param string $content
      * @param string $filename
-     * 
+     *
      * @return string
      */
     public function createFile($content, $filename = null)
@@ -102,5 +120,5 @@ class TemplateService
 
         return $filename;
     }
-    
+
 }

+ 1 - 3
composer.json

@@ -13,7 +13,5 @@
     ],
     "require": {
         "ik/base-admin-bundle": "*"
-    },
-    "version": "1.0",
-    "minimum-stability": "stable"
+    }
 }