2016-04-18 65 views
4

我使用樹枝作爲模板引擎,但我的HTML不呈現。全部與HTML標籤本身一起顯示。HTML不呈現[Twig]/[Slim]

Data from Database can be found by clicking here

我搜索的SO,並獲得其提供的解決方案很多帖子,但沒有工作對我來說

低於

是解決方案:

  1. 下面的代碼使用[不工作]

    {{ detailArticle.artdesc|raw }} 
    
    or 
    
    {% autoescape false %} 
        {{ detailArticle.artdesc }} 
    {% endautoescape %} 
    
  2. 使用過濾器和自動加載像下面[不工作]

    $app->view = new \Slim\Views\Twig(); 
    $app->view->setTemplatesDirectory("application/view"); 
    $app->view->parserOptions = array(
        'debug' => 'true', 
        'auto_reload' => true, 
        'autoescape' => true 
    ); 
    $app->view->parserExtensions = array(new \Slim\Views\TwigExtension()); 
    
  3. 清除嫩枝緩存[我沒有CLI上的cPanel,所以不知道如何做到這一點]

    rm -rf app/cache/* OR rm -rf app/cache/prod/twig OR app/console cache:clear --env=prod 
    

沒有解決方案爲我工作。請指導。

數據的顯示方式與您在上述鏈接中看到的方式相同。

我composer.json是如下

{ 
"name":"panique/mini2", 
"homepage":"https://github.com/panique/mini2", 
"license":"MIT", 
"require":{ 
    "php":">=5.3.0", 
    "slim/slim": "~2.6", 
    "slim/views": "~0.1", 
    "twig/twig": "~1.16", 
    "panique/pdo-debug": "0.2", 
    "panique/php-sass": "~1.0", 
    "matthiasmullie/minify": "~1.3" 
}, 
"autoload":{ 
    "psr-4":{ 
     "Mini\\": "Mini" 
    } 
} 
} 
+0

您是否嘗試過用[逐字](http://twig.sensiolabs.org/doc/tags/verbatim.html#逐字)標籤? – Matteo

+0

如何使用此... – Gags

+0

hi @gags我在我的回答中發佈了一個示例。讓我知道 – Matteo

回答

2

我在幾個月前解決了這個同樣的問題。 你需要在你的PHP寫:

$escaper = new Twig_Extension_Escaper(false); 
$app->view->addExtension($escaper); 

我的代碼與您的代碼

  1. 下載

    require_once 'path_to_Twig/Autoloader.php'; 
    Twig_Autoloader::register(); 
    
    $loader = new Twig_Loader_Filesystem('path_to_views/'); 
    $twig = new Twig_Environment($loader, array()); 
    
    $escaper = new Twig_Extension_Escaper(false); 
    $twig->addExtension($escaper); 
    
    echo $twig->render($view_name, $data_to_view); 
    

    步驟:http://pear.twig-project.org/get/Twig-1.24.0.tgz

  2. 解壓縮併發生在你proyect。
  3. 在文件中這樣寫:
require 'vendor/autoload.php'; 

// Initialize Slim (the router/micro framework used) 
$app = new \Slim\Slim(array( 
'mode' => 'production' 
)); 

require_once 'path_to_Twig/Autoloader.php'; //Substitute the Twig path, the path to the uncompress files in the project 
Twig_Autoloader::register(); 

$loader = new Twig_Loader_Filesystem('path_to_views/'); //Substitute with the path with the html files 
$twig = new Twig_Environment($loader, array()); 

$escaper = new Twig_Extension_Escaper(false); 
$twig->addExtension($escaper); 

echo $twig->render($view_name, $data_to_view); //First the name of the view html file, data that you want pass to the view in one array 

你需要把這一切都磨片你想呈現在控制器的觀點,就是說,你這個替換你的代碼。

+0

調用未定義的方法Slim \ Views \ Twig :: addExtension()是錯誤 – Gags

+0

但是您創建了樹枝對象並且addExtension是一種方法。奇怪的是你可以創建對象但不能訪問該方法。 –

+0

這裏可以找到「Twig_Extension_Escaper」 – Gags

0

遇到同樣的問題,並通過添加Twig_Extnesion_Escaper解決它:

$v = new \Slim\Views\Twig(__DIR__ . '/../../templates', [ 
    'cache' => __DIR__ . '/../../templates/twigcache' 
]); 
$v->addExtension(new Twig_Extension_Escaper());