【问题标题】:Argument 1 passed to Twig_Filter::__construct() must be an instance of string, string given传递给 Twig_Filter::__construct() 的参数 1 必须是字符串的实例,给定的字符串
【发布时间】:2017-06-12 07:32:50
【问题描述】:

我对 TWIG 有疑问。此代码在学校有效,但绝对不适用于我的笔记本电脑。我尝试了一个简单的代码,但出现错误:

可捕获的致命错误:传递给 Twig_Filter::__construct() 的参数 1 必须是字符串的实例,给定的字符串,在 /opt/lampp/htdocs/webalizer/projetSilex/vendor/twig/twig/lib/Twig/ 中调用第 139 行的 Extension/Core.php 并在第 35 行的 /opt/lampp/htdocs/webalizer/projetSilex/vendor/twig/twig/lib/Twig/Filter.php 中定义

我使用 php 5.6 / SILEX 2.0 / Twig 2.0

感谢您的帮助。

我的代码很简单但是不起作用:

require_once __DIR__.'/vendor/autoload.php';

$app = new Silex\Application();
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__.'/views',
  ));

  $app->get('/', function(){
return "hello";
  });

 $app->get('/hello/{name}', function($name)use($app){

 return $app['twig']->render('hello.twig',
                            array("name"=>$name
                                ));

 });

 $app->run();>

【问题讨论】:

标签: php twig silex


【解决方案1】:

@CharlotteDunois 指出了这一点,但 Twig 2.0 需要 >=PHP7.0,因此在您的环境(php 5.6)中,您不能使用 Twig 2.0。来自Twig official documentation:

先决条件

Twig 至少需要 PHP 7.0.0 才能运行。

请注意,对于 PHP5.x 分支,您仍然可以使用 Twig 1.x

【讨论】:

    【解决方案2】:

    只是我的 2 美分。我无法升级 PHP 版本(共享主机),所以我不得不将我的 package.json 中的 Twig 版本更改为使用 1.x 版本。

    替换这一行: "symfony/twig-bridge": "~2.8|^3.0", -> "symfony/twig-bridge": "~2.8|3.0.*",

    然后,我添加了这一行:

    "twig/twig" : "~1.0"
    

    并且 evething 在 PHP 服务器 v 5.6 上正常工作

    【讨论】:

      猜你喜欢
      • 2014-04-18
      • 2016-08-10
      • 1970-01-01
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多