简体   繁体   中英

Twig render other controller from base view

I am using twig seperately, not from within Symfony.

I have base layout base.html. Other layouts extend that one and that seems to work fine.

If I have a controlleraction BlogPosts which passes an array of blogposts, I render the blog layout, which extend from the base layout to see that content. That works as intended

Now, I would like to pass variables to the base template, so it is visible on every page. How can I do this?

I found this article , but that mentions it for symfony. On its own, twig does not have the render function.

If you are using twig without symfony, I assume your project directory structure is similar like this:

project
  - templates
     - base.html.twig
     - index.html.twig
  - vendor
  - index.php

So, your index.php code should be like:

require_once 'vendor/autoload.php';
$loader = new Twig_Loader_Filesystem('templates', getcwd());
$twig = new Twig_Environment($loader);

echo $twig->render('index.html.twig', array('name' => 'Hello'));

So, if you want pass some variable to your base template, twig has method to add value for using globally

require_once 'vendor/autoload.php';
$loader = new Twig_Loader_Filesystem('templates', getcwd());
$twig = new Twig_Environment($loader);
$twig->addGlobal('title', 'HomePage');

echo $twig->render('index.html.twig', array('name' => 'Hello'));

I hope this help

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM