Uložení latte šablony do souboru

kiCkZ
Člen | 153
+
0
-

Zdravim,

chci se zeptat, zda je možné a jak uložit vygenerovanou latte šablonu (XML feed) do souboru.

Děkuji

nightfish
Člen | 516
+
+1
-

Z Presenteru třeba takto:

/** @var \Nette\Bridges\ApplicationLatte\Template $template */
$template = $this->getTemplate();
file_put_contents(__DIR__.'/soubor.xml', (string)$template);
kiCkZ
Člen | 153
+
0
-

A to mam vložit kam ? Přímo do funkce co renderuje to RSS ?

class ExportPresenter extends Nette\Application\UI\Presenter
{
    /** @var \Model\AdamWordpress @inject */
    public $adamWordpress;

    public function renderRss()
    {
        $this->template->arrays = $this->adamWordpress->getContent();

	// basic image for all posts
	//$this->template->placeholder = $this->adamWordpress->getPlaceholder();

	$this->template->pers = $this->test;

	$template = $this->getTemplate();
	file_put_contents(__DIR__.'/../../www/xml/soubor.xml', (string)$template);

    }
}

Toto totiž nefunguje:

Exception in Nette\Bridges\ApplicationLatte\Template::__toString(): Missing template file ''. in C:\xampp\htdocs\wpadamapp2\vendor\latte\latte\src\Latte\Loaders\FileLoader.php:41

Editoval kiCkZ (12. 1. 2018 15:38)

nightfish
Člen | 516
+
0
-

kiCkZ napsal(a):

Máš pravdu, nedošlo mi, že se přiřazení souboru šablony do objektu Template děje až za render* metodou.

Řešení mě napadají dvě:

  1. nastavit cestu k šabloně ručně – $template->setFile(__DIR__.'/templates/Export/rss.latte');
  2. využít kód, který šablonu hledá podle nějakých pravidel – viz metodu sendTemplate

Editoval nightfish (12. 1. 2018 16:03)