我按照此處描述的步驟在 Slim https://github.com/slimphp/Twig-View/tree/3.1.0#usage中使用 twig-view但當(dāng)我嘗試時(shí),我在屏幕上收到以下錯誤使用 TwigExtension 中使用的任何模板函數(shù)Fatal error: Uncaught Twig\Error\SyntaxError: Unknown "url_for" function.我已經(jīng)$ composer require slim/twig-view:^3.0成功運(yùn)行,我的composer.json文件如下所示"require": { "slim/slim": "4.*", "slim/psr7": "^1.2", "league/container": "^3.3", "slim/twig-view": "^3.0" },這是我的代碼require_once __DIR__ . '/../vendor/autoload.php';$container = new \Slim\Factory\Container();\Slim\Factory\AppFactory::setContainer($container);$container->add('view', function () { return \Slim\Views\Twig::create(__DIR__ . '/views', [ 'cache' => false, ]);});$app = \Slim\Factory\AppFactory::create();$app->add(\Slim\Views\TwigMiddleware::createFromContainer($app));require_once __DIR__ . '/../routes.php';// routes.php$app->get('/', function ($request, $response, $args) use ($container) { return $container->get('view')->render($response, 'home.twig', ['foo' => 'test']);})->setName('home');// home.twig...<body> Home {{ foo }} <br> <a href="{{ url_for('about') }}">About</a></body>...如果我從樹枝模板中刪除 ,url_for則頁面可以在瀏覽器上正常加載。我嘗試在我的代碼庫和供應(yīng)商文件夾中搜索 TwigExtension,但找不到任何類似的文件。我在這里做錯了什么嗎?
1 回答

慕俠2389804
TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個贊
看起來這是因?yàn)槁?lián)盟容器。似乎每次調(diào)用函數(shù)時(shí)都會創(chuàng)建一個新的 Twig 實(shí)例,$container->get('view')每次都會返回一個新實(shí)例,而不是引用同一個實(shí)例。所以解決方法是
$twig = \Slim\Views\Twig::create(__DIR__ . '/views', [
'cache' => false,
]);
$container->add('view', function () use (&$twig) {
return $twig;
});
// Or this instead
$container->add(
'view',
\Slim\Views\Twig::create(__DIR__ . '/views', [
'cache' => false,
])
);
- 1 回答
- 0 關(guān)注
- 194 瀏覽
添加回答
舉報(bào)
0/150
提交
取消