Twig呈现带有细长框架

时间:2017-10-31 12:24:45

标签: php twig slim

我正在使用具有超薄框架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;

它在localhost中工作,而不是在我的服务器中(我的服务器中有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类 正好在这一行:

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

3 个答案:

答案 0 :(得分:1)

Twig,因为版本v2.0.0需要PHP 7.0或更高版本。正如您所说,您在远程服务器上使用PHP 5.6,它们将不能一起工作。您可以在远程升级到PHP 7(如果可能),或者将twigrd降级到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

答案 1 :(得分:1)

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

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

{% assign searchTerm = request.params['term'] %}

{% if firstName contains searchTerm %}
 <item>
  <h4> {{item.usc_firstname}} </h4>
  <h4> {{searchTerm}} </h4>
  <hr width = "100%">
 </item>
{% endif %}

告诉composer运行新配置并应用更改:

"twig/twig":"^1.18"

答案 2 :(得分:0)

我只是通过更改我的composer来实现这一点.json需要:

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

如果您使用版本“~5.1”,那么Eloquent也存在问题,它将无法正常工作我只是为数据库依赖项推出了严格版本“5.4.36”,如下所示:

"illuminate/database": "5.4.36"