web-dev-qa-db-fra.com

L'argument 1 passé à Twig_Filter :: __ construct () doit être une instance de chaîne, chaîne donnée

J'ai un problème avec TWIG. Ce code fonctionne à l'école mais absolument pas avec mon ordinateur portable. J'ai essayé avec un code simple mais j'ai l'erreur:

Erreur fatale capturable: l'argument 1 transmis à Twig_Filter :: __ construct () doit être une instance de chaîne, chaîne donnée, appelée dans/opt/lampp/htdocs/webalizer/projetSilex/vendor/twig/twig/lib/Twig/Extension/Core .php à la ligne 139 et défini dans /opt/lampp/htdocs/webalizer/projetSilex/vendor/twig/twig/lib/Twig/Filter.php à la ligne 35

J'utilise php 5.6/SILEX 2.0/Twig 2.0

Merci de votre aide.

Mon code est très simple mais ne fonctionne pas:

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();>
19
Ben

@CharlotteDunois l'a souligné, mais Twig 2.0 nécessite> = PHP7.0, donc dans votre environnement (php 5.6) vous ne pouvez pas utiliser Twig 2.0. De la documentation officielle Twig :

Prérequis

Twig a besoin d'au moins PHP 7.0.0 pour fonctionner.

Notez que pour la branche PHP5.x, vous avez toujours Twig 1.x aviable

31
mTorres

juste mes 2 cents. Je ne pouvais pas mettre à niveau PHP (hébergement partagé), j'ai donc dû changer la version Twig dans mon package.json pour utiliser la version 1.x).

Remplacez cette ligne: "symfony/twig-bridge": "~2.8|^3.0", -> "symfony/twig-bridge": "~2.8|3.0.*",

puis j'ai ajouté cette ligne:

"twig/twig" : "~1.0"

et tout fonctionnait correctement sur PHP server v 5.6

0
Carlos Bonavia