Php HTML未呈现为[Twig]/[Slim]

Php HTML未呈现为[Twig]/[Slim],php,html,twig,slim,Php,Html,Twig,Slim,我使用twig作为模板引擎,但我的html没有呈现。所有内容都与HTML标记一起显示 我搜索了这么多,得到了很多提供解决方案的帖子,但没有一篇适合我 以下是解决方案: 使用以下代码[不工作] {{ detailArticle.artdesc|raw }} or {% autoescape false %} {{ detailArticle.artdesc }} {% endautoescape %} $app->view = new \Slim\Views\Twig(); $

我使用twig作为模板引擎,但我的html没有呈现。所有内容都与HTML标记一起显示

我搜索了这么多,得到了很多提供解决方案的帖子,但没有一篇适合我

以下是解决方案:

  • 使用以下代码[不工作]

    {{ detailArticle.artdesc|raw }}
    
     or
    
    {% autoescape false %}
      {{ detailArticle.artdesc }}
    {% endautoescape %}
    
    $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());
    
    rm -rf app/cache/*  OR rm -rf app/cache/prod/twig OR app/console cache:clear --env=prod
    
  • 使用过滤器和自动加载,如下所示[不工作]

    {{ detailArticle.artdesc|raw }}
    
     or
    
    {% autoescape false %}
      {{ detailArticle.artdesc }}
    {% endautoescape %}
    
    $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());
    
    rm -rf app/cache/*  OR rm -rf app/cache/prod/twig OR app/console cache:clear --env=prod
    
  • 清除细枝缓存[我在cPanel上没有CLI,因此不确定如何执行此操作

    {{ detailArticle.artdesc|raw }}
    
     or
    
    {% autoescape false %}
      {{ detailArticle.artdesc }}
    {% endautoescape %}
    
    $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());
    
    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"
        }
     }
    }
    

    我几个月前解决了这个问题。 您需要在php中编写以下内容:

    $escaper = new Twig_Extension_Escaper(false);
    $app->view->addExtension($escaper);
    
    我的代码

    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);
    
    使用代码的步骤

  • 下载:
  • 解压缩并放入项目中
  • 在您的文件中写入以下内容:

  • 您需要在控制器中渲染视图时放置所有这些,也就是说,用这些替换您的代码。

    遇到了相同的问题,并通过添加细枝扩展转义器解决了此问题:

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

    调用未定义的方法Slim\Views\Twig::addExtension()是错误的,但是您已经创建了Twig对象,而addExtension是一个方法。非常奇怪的是,您可以创建对象,但无法访问该方法。如果可以定位此
    Twig\u Extension\u Escaper
    ,我在解决方案中写入了我的所有代码,我将此代码用于所有项目。如果你在Slimframework中使用名称空间,试着直接使用Twig,就像我的代码一样。让我们看看。你试过标签了吗?如何使用这个…hi@gags我在我的回答中贴了一个例子。让我知道抱歉@gags不是你的案子。。。