Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用CodeIgniter集成细枝模板?_Php_Codeigniter_Twig - Fatal编程技术网

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']);
}