Potřebuji něco jako „FileResponse do šablony“
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- smi
- Člen | 75
Potřeboval bych podávaný (=zobrazovaný) existujíci soubor (.php, .xml a obrazky) svázat se šablonou @layout.latte – tedy aby se zobrazila moje hlavicka, menu, … a do toho zakomponovaný obsah souboru.
Nemáte někdo typ či radu ? (Vlastní response, dědičnost šablon, …)
(Důvody: ochrana souborů před stažením bez přihlášení, přeformátování z původního každý soubor jiná ves, … Souborů je cca 30.000. takže není šance na jednoduché sjednocení ručně)
Díky
- Glubo
- Člen | 12
No, uplne nejtrivialnejsi reseni by bylo mit neco jako
<?php
class FilePresenter extends BasePresenter
{
public function renderDefault($filename)
{
if (!$this->validate_filename($filename)) {
throw new Nette\Application\BadRequestException();
};
$this->template->file_content = file_get_contents (BASE_FILE_DIR . '/' . $filename);
}
private function validate_filename($filename) {
...//zkontrolujeme, zda filename je bezpecne
}
}
?>
a potom v sablone {!$file_content}, popr. {$file_content} pokud neverime obsahu souboru a chceme escapovat.
Ale je to asi neoptimalni reseni a pouze nastin, kudy by se slo vydat.