include/embed skrze absolutní cestu
- janvacek
- Člen | 15
{embed /app/cesta/cesta/templates/parts/sablona.latte}{/embed}
,
která v té cestě opravdu existuje, (cesta přímo kopírovaná skrze
dialogové okno v PhpStormu), vyhodí
Missing template file '/app/cesta/cesta/templates/parts/sablona.latte
,
přičemž s relativní cestou to funguje správně. Latte
mám v2.11.5
- janvacek
- Člen | 15
Aha, v tom případě by asi bylo lepší si napsat vlastní Loader(?
Říkám to správně?) který by fungoval na principu něco jako odkazy na
presentery – např.
{embed :*Module:*Module:templates/parts/sablona.latte}{/embed}
,
není někde něco už podobného řešené? To bylo víceméně to, co jsem se
snažil dohledat, jestli už někdo někdy řešil
- Marek Znojil
- Člen | 90
Ahoj, stačí si rozšířit FileLoader.
Já jej mám příklad takto:
use Nette\Utils\Strings;
final class FileLoader extends \Latte\Loaders\FileLoader{
protected array $prefixes = [];
public function setPrefixes(array $prefixes): void{
$this->prefixes = $prefixes;
}
public function setPrefix(string $prefix, string $path): void{
$this->prefixes[$prefix] = $path;
}
public function withPrefixes(array $prefixes): self{
$this->setPrefixes($prefixes);
return $this;
}
public function getContent($fileName): string{
foreach($this->prefixes as $k => $v){
if(Strings::startsWith($fileName, $k) === true){
$fileName = $v . Strings::substring($fileName, mb_strlen($k));
break;
}
}
return parent::getContent($fileName);
}
public function getReferredName($file, $referringFile): string{
foreach(array_keys($this->prefixes) as $v){
if(Strings::startsWith($file, $v) === true){
return $file;
}
}
return parent::getReferredName($file, $referringFile);
}
}
Pak jej přidám do služeb, kde si pomocí metody withPrefixes() rovnou zavedu požadované cesty na své prefixy:
services:
nette.latteFactory:
setup:
- setLoader(App\Latte\FileLoader()::withPrefixes([
'~': '%appDir%/Modules'
'a~': '%appDir%/Modules/Admin'
'f~': '%appDir%/Modules/Front'
]))
Pro příklad:
{include ../../../Admin/sablona.latte}
mohu zapsat jako
{include a~/sablona.latte}
Vycházel jsem z:
https://youtu.be/G-MigprZmzQ?…