【问题标题】:Twig render empty page with slim frameworkTwig 使用超薄框架渲染空白页面
【发布时间】:2017-11-01 22:44:08
【问题描述】:

我正在使用带有 slim framework 3 的 Twig 模板引擎

我的控制器中有一个简单的功能

public function test_twig($request, $response, $args) {
     return $this->view->render($response, "login.phtml");
}

当我在 locahost 中运行此代码时,它运行良好,但我在我的服务器上尝试它显示一个空页面,非常奇怪的行为页面没有动态变量它只是 HTML

我也试过这个:

$str = $this->view->fetchFromString('<p>Hi, my name is {{ name }}.</p>', [
        'name' => "oussama"
    ]);
    $response->getBody()->write($str);
    return $response;

它在本地主机而不是我的服务器中工作(我的服务器中有 PHP 5.6)

执行完之后我发现编译函数不能编译一个简单的 HTML 文件!!!

/** * 编译模板源代码。 * * @return string 编译后的PHP源码 * * @throws Twig_Error_Syntax 在标记化、解析或编译过程中出现错误时 */

public function compileSource(Twig_Source $source)
{
    try {

        return $this->compile($this->parse($this->tokenize($source)));
    } catch (Twig_Error $e) {
        $e->setSourceContext($source);
        throw $e;
    } catch (Exception $e) {
        throw new Twig_Error_Syntax(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e);
    }
}

我确实遵循了代码,直到 Twig_Lexer Class Inside the Constructor 正好在这一行:

   'operator' => $this->getOperatorRegex(),

【问题讨论】:

  • 您的错误日志中有什么内容?
  • 我在日志中找不到任何东西,我跟着代码执行我发现slim核心中的compileSource函数正在这样做
  • @AdamA 请检查我的问题编辑
  • 你使用的是什么 Twig 版本?
  • 我使用的是 Twig 2.2 版

标签: php twig slim


【解决方案1】:

Twig 从 v2.0.0 版本开始需要 PHP 7.0 或更高版本。正如您所说,您在远程服务器上有 PHP 5.6,它们不能一起工作。您可以在遥控器上升级到 PHP 7(如果可能),或者将 twig 降级到 v1.35.0,它仍然支持 PHP 5。

来源:

  1. https://packagist.org/packages/twig/twig#v2.2.0
  2. https://github.com/twigphp/Twig/blob/29bb02dde09ff56291d30f7687eb8696918023af/composer.json

【讨论】:

  • 但是兄弟我正在使用packagist.org/packages/slim/twig-view 它正在使用 php: >=5.5.0 ,我在另一台安装了 5.6 PHP 的本地计算机上进行了尝试,它工作得非常正常 不是你提到的树枝
  • 啊,你没有提到版本指的是什么包。我指的树枝是树枝视图的子依赖。你能把twigphp twig版本和你本地的php版本一起发一下吗?
【解决方案2】:

Twig 2.4 需要 PHP 7 及更高版本。您的服务器不满足该要求,Twig 失败。

我们需要通过设置我们自己的来覆盖默认的 Twig 依赖。在项目的 conposer.json 文件中添加 Twig 依赖项:

"twig/twig":"^1.18"

告诉作曲家运行新配置并应用更改:

composer update

【讨论】:

    【解决方案3】:

    我刚刚通过更改我的 composer.json 要求使这个工作:

    "slim/twig-view": "2.0", 将版本更改为 2.0,因为它适用于 PHP 5.6

    如果您使用版本“~5.1”,Eloquent 也存在问题,它不会工作我只是为数据库依赖设置了一个严格的版本“5.4.36”,如下所示:

    "illuminate/database": "5.4.36"
    

    【讨论】:

      猜你喜欢
      • 2015-11-06
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多