Аргумент 1 передан Twig_Filter:: __ construct() должен быть экземпляром строки, указанной строкой
У меня проблема с TWIG. Этот код работает в школе, но совсем не с моим ноутбуком. Я пробовал с простым кодом, но у меня есть ошибка:
Обманутая фатальная ошибка: аргумент 1 передан Twig_Filter:: __ construct() должен быть экземпляром строки, заданной строки, вызываемой в/opt/lampp/htdocs/webalizer/projetSilex/vendor/twig/twig/lib/Twig/Расширение/Core.php в строке 139 и определено в /opt/lampp/htdocs/webalizer/projetSilex/vendor/twig/twig/lib/Twig/Filter.php в строке 35
Я использую 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();>
Ответы
Ответ 1
@CharlotteDunois указал на это, но Twig 2.0 требует >= PHP7.0, поэтому в вашей среде (php 5.6) вы не можете использовать Twig 2.0. Из Официальная документация Twig:
Предпосылки
Для запуска Twig требуется как минимум PHP 7.0.0.
Обратите внимание, что для ветки PHP5.x у вас все еще есть Twig 1.x aviable
Ответ 2
только мои 2 цента. Я не мог обновить версию PHP (общий хостинг), поэтому мне пришлось изменить версию Twig в моем пакете .json для использования версии 1.x.
Заменить эту строку:
"symfony/twig-bridge": "~2.8|^3.0"
, → "symfony/twig-bridge": "~2.8|3.0.*",
то я добавил эту строку:
"twig/twig" : "~1.0"
и корректно работало на сервере PHP v 5.6