传递给Twig_Filter :: __ construct()的参数1必须是字符串的实例,给定字符串

时间:2017-01-26 18:06:50

标签: php twig silex

我有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();>

2 个答案:

答案 0 :(得分:32)

@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

答案 1 :(得分:0)

只差我2美分。我无法升级PHP版本(共享主机),因此我不得不在package.json中更改Twig版本以使用1.x版本。

替换此行: "symfony/twig-bridge": "~2.8|^3.0", - &gt; "symfony/twig-bridge": "~2.8|3.0.*",

然后,我添加了这一行:

"twig/twig" : "~1.0"

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