尝试使用 Symfony 模板组件加载模板时,您请求了一个不存在的参数 "name" 错误

You have requested a non-existent parameter "name" error when trying to load a template using Symfony templating component

我正在使用 Symfony 模板组件向我正在处理的项目添加模板功能,我正在关注文档 here 但我正在使用服务容器 Symfony 组件并在文档中添加代码使用此代码:

$containerBuilder->register('template_name_parser', Symfony\Component\Templating\TemplateNameParser::class);
$containerBuilder->register('file_system_loader', Symfony\Component\Templating\Loader\FilesystemLoader::class)
    ->setArguments([realpath('./') . '/app/Views/%name%']);
$containerBuilder->register('templating', Symfony\Component\Templating\PhpEngine::class)
    ->setArguments([new Reference('template_name_parser'), new Reference('file_system_loader')]);

但是当我尝试使用此代码加载模板文件时:

container->get('templating')->render('home.php')

我收到这个错误:

Something went wrong! (You have requested a non-existent parameter "name".)

因此,正如@yceruto 提到的,Symfony DI 会将 %% 之间的字符串视为参数,因此为了转义它,我们需要在提到的 here 之前添加 %,所以我这样更新了我的代码:

$containerBuilder->register('file_system_loader', Symfony\Component\Templating\Loader\FilesystemLoader::class)
->setArguments([realpath('./') . '/app/Views/%%name%']);