2017-01-26 13 views
16

Tôi gặp sự cố với TWIG. Mã này hoạt động ở trường nhưng hoàn toàn không phải với máy tính xách tay của tôi. Tôi đã thử với một mã đơn giản nhưng tôi có lỗi:Đối số 1 được chuyển đến Twig_Filter :: __ construct() phải là một thể hiện của chuỗi, chuỗi được cho

Catchable fatal error: Argument 1 passed to Twig_Filter::__construct() must be an instance of string, string given, called in /opt/lampp/htdocs/webalizer/projetSilex/vendor/twig/twig/lib/Twig/Extension/Core.php on line 139 and defined in /opt/lampp/htdocs/webalizer/projetSilex/vendor/twig/twig/lib/Twig/Filter.php on line 35

tôi sử dụng php 5.6/SILEX 2.0/cành 2,0

Nhờ sự giúp đỡ của bạn.

Mã của tôi rất đơn giản nhưng không hoạt động:

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

Bạn không thể gõ khai báo các loại vô hướng trong PHP5. https://secure.php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration –

+1

bạn phải vượt qua một chuỗi, không phải là một chuỗi, điều này là khá rõ ràng ;-) (nhà soạn nhạc nên cảnh báo bạn cài đặt Twig 2.0 với Php 5.6 không?) –

+0

Có thể trùng lặp của [Lỗi khi chuyển chuỗi vào phương thức có loại gợi ý] (https://stackoverflow.com/questions/3112791/error-when-passing-string-into-method- với kiểu gợi ý) – Axel

Trả lời

26

@CharlotteDunois chỉ ra điều này, nhưng cành 2.0 cần> = PHP7.0, vì vậy trong môi trường của bạn (php 5.6), bạn không thể sử dụng Twig 2.0. Từ Twig official documentation:

Prerequisites

Twig needs at least PHP 7.0.0 to run.

Chú ý rằng đối với chi nhánh PHP5.x bạn vẫn có cành 1.x aviable

0

chỉ của tôi 2 cent. Tôi không thể nâng cấp phiên bản PHP (chia sẻ lưu trữ), vì vậy tôi đã phải thay đổi phiên bản Twig trong package.json của tôi để sử dụng phiên bản 1.x.

Thay thế dòng này: "symfony/twig-bridge": "~2.8|^3.0", ->"symfony/twig-bridge": "~2.8|3.0.*",

sau đó, tôi đã thêm dòng này:

"twig/twig" : "~1.0" 

và evething làm việc đúng trên máy chủ PHP v 5.6

Các vấn đề liên quan