我尝试使用此link to twig basics将Twig模板实现为代码点火器。
这是我的代码:
require_once(APPPATH.'path/to/Twig/Autoloader.php');
Twig_Autoloader::register();
$loader = new Twig_Loader_Array(array('index' => 'Hello {{ name }}!'));
$twig =new Twig_Environment($loader);
echo $twig->render('index', array('name' =>'Testing Twig'));
它提供输出:
Hello Testing Twig!
但我无法在代码点火器中找到模板文件夹。
任何人都可以帮助我吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
有很多项目将Twig集成到CodeIgniter中。
以下是其中一些(按CodeIgniter版本):
答案 2 :(得分:1)
这是控制器内部使用Twig渲染模板的方法。
public function some_method () {
$ci_path = realpath(FCPATH);
Twig_Autoloader::register();
$loader = new Twig_Loader_Filesystem($ci_path.'/application/views');
$twig = new Twig_Environment($loader, array(
'cache' => $ci_path.'/application/views_twig_cache',
));
$template = $twig->loadTemplate('twigtest.php');
echo $template->render(['name'=>'Jhon']);
}
您可能需要做的是将Twig_Loader_Filesystem设置为正确的路径。请注意,我还设置了缓存路径...如果您取消设置,您的模板将重新加载每个页面加载。
我正在使用composer autoload进行自动加载(请参阅应用程序文件夹中的config / config.php)。我在application / vendor中有composer.json。
希望有所帮助。
答案 3 :(得分:0)
我所知道的最好,最简单的是:
首先使用composer将树枝添加到您的项目中(这将使其保持最新状态):
composer require "twig/twig:^2.0"
然后,创建文件application/libraries/Twig.php
(大写很重要),其中包含:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
require_once(FCPATH . 'vendor/autoload.php');
class Twig {
private $twig;
public function __construct()
{
$loader = new Twig_Loader_Filesystem(APPPATH . 'views');
$this->twig = new Twig_Environment($loader);
}
public function render($template, $placeholders)
{
return $this->twig->render($template . '.php', $placeholders);
}
}
最后,在像这样的控制器中使用它:
public function index()
{
$this->load->library('twig'); // Can also be autoloaded
echo $this->twig->render('some_page_in_views', ['foo' => 'barr']);
}