Php 如何使用CodeIgniter集成细枝模板?
我试着用这个来实现将小树枝模板转换成代码点火器 这是我的代码:Php 如何使用CodeIgniter集成细枝模板?,php,codeigniter,twig,Php,Codeigniter,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('
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!
但我无法在code igniter中找到templates文件夹
有人能帮我吗?有人已经创建了用于连接twig和ci的库 你可以看到下面的链接
有许多项目将细枝集成到CodeIgniter中 以下是其中的一些(按CodeIgniter版本):
- CI 2.x:
- CI 3.x:
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_文件系统设置为正确的路径。请注意,我还设置了缓存路径。。。如果您取消设置此选项,您的模板将重新加载每个页面
我正在使用composer autoload进行自动加载(请参阅应用程序文件夹中的config/config.php)。我在应用程序/供应商中有composer.json
希望这能有所帮助。我所知道的最简单的方法是: 首先,使用composer将细枝包含到项目中(这将使其保持最新): 然后,创建文件
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);
}
}
您需要实现自己的文件加载机制。CI不支持现成的细枝。你能做的是,覆盖视图加载器,让它使用twigSorry@Broncha Iam渲染视图。你不明白,你能详细地说,我应该覆盖哪里吗?你以前用过Sparks Repo吗?我尝试了github的集成,尽管它没有出现@philip,没有错误,但没有得到所需的输出
<?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']);
}