Die Überschrift ist etwas irreführend. Es geht darum, dass referenzierte Templates nach dem Muster
bundle:section:template.format.engine
aufgebaut sein müssen. Der Teil “template” muss (?) dabei den relativen Pfad enthalten, zB
MyProjectBundle::pages/testpage.html.twig
, andernfalls kommt es zu der Fehlermeldung aus der Überschrift. Nun will man vielleicht nicht an drölf Stellen diesen Pfad (oder das Bundle!) angeben (sei es der Zentralisierung wegen, sei es aus Faulheit beim Tippen). Lösung: FilesystemLoader, bzw. das geerbte Twig_Loader_Filesystem->addPath(…):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
class TestpageController extends Controller { public function indexAction($name, Request $request) { // ... $loader = $this->container->get('twig')->getLoader(); // add bundle and everything below: $loader->addPath('my/template/root'); $loader->addPath('my/template/root/subfolder'); // no more redundant stuff required: return $this->render('testpage.html.twig', $vars); } } |
bzw. im Template:
1 2 3 4 |
{% extends 'layout.html.twig' %} {# instead of #} {# extends 'MyProjectBundle::layout.html.twig' #} |