/**
  * Return the internal array of plates folders.
  *
  * @return \League\Plates\Template\Folder[]
  */
 private function getPlatesFolders()
 {
     $folders = $this->template->getFolders();
     $r = new ReflectionProperty($folders, 'folders');
     $r->setAccessible(true);
     return $r->getValue($folders);
 }
Esempio n. 2
0
 /**
  * Parse name to determine template folder and filename.
  */
 protected function parse()
 {
     $parts = explode('::', $this->name);
     if (count($parts) === 1) {
         if (is_null($this->engine->getDirectory())) {
             $this->throwParseException('The default directory has not been defined.');
         }
         if ($parts[0] === '') {
             $this->throwParseException('The template name cannot be empty.');
         }
         $this->file = $parts[0];
     } elseif (count($parts) === 2) {
         if ($parts[0] === '') {
             $this->throwParseException('The folder name cannot be empty.');
         }
         if ($parts[1] === '') {
             $this->throwParseException('The template name cannot be empty.');
         }
         if (!$this->engine->getFolders()->exists($parts[0])) {
             $this->throwParseException('The folder "' . $parts[0] . '" does not exist.');
         }
         $this->folder = $this->engine->getFolders()->get($parts[0]);
         $this->file = $parts[1];
     } else {
         $this->throwParseException('Do not use the folder namespace seperator "::" more than once.');
     }
 }
Esempio n. 3
0
 /**
  * PlatesProvider constructor.
  * @param Engine $plates
  * @param string $root_path
  * @param string $namespace
  */
 public function __construct(Engine $plates, $root_path, $namespace)
 {
     $this->plates = $plates;
     $this->namespace = $namespace;
     if (!$plates->getFolders()->exists($namespace)) {
         $plates->addFolder($namespace, $root_path);
     }
 }
 /**
  * Render a string
  *
  * @param string $template The template content to render
  * @param array $locals The variable to use in template
  * @return null|string
  */
 public function render($template, array $locals = array())
 {
     $tmpName = uniqid('plates_tmp_', false);
     $tmpPath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $tmpName;
     if (!is_null($this->plates->getFileExtension())) {
         $tmpPath .= '.' . $this->plates->getFileExtension();
     }
     $isTmpRegister = $this->plates->getFolders()->exists(sys_get_temp_dir());
     if (!$isTmpRegister) {
         $this->plates->addFolder(sys_get_temp_dir(), sys_get_temp_dir());
     }
     file_put_contents($tmpPath, $template);
     $data = $this->plates->render(sys_get_temp_dir() . '::' . $tmpName, $locals);
     unlink($tmpPath);
     if (!$isTmpRegister) {
         $this->plates->getFolders()->remove(sys_get_temp_dir());
     }
     return $data;
 }
Esempio n. 5
0
 /**
  * Set the parsed template folder.
  * @param  string $folder
  * @return Name
  */
 public function setFolder($folder)
 {
     $this->folder = $this->engine->getFolders()->get($folder);
     return $this;
 }