我正在使用 Symfony 4.x,目前在 Twig 模板中包含这样的组件:
我的模板.twig
{% include '/components/my-component.twig'
with {
data1 : some_array,
data2 : some_string
}
%}
在上面的示例中,my-component.twig需要data1将data2其传递给它。这意味着这两个数据项需要对...可用my-template.twig,这意味着我需要使其在加载 my-template.twig的控制器中可用。
class MyController extends Controller {
// ...
$data = [
'data1' = [ /* some array data */ ];
'data2' = 'a string';
];
$res = $this->renderView('my-template.twig', $data);
return new Response($res);
}
我遇到的问题是我可能会my-component.twig在许多不同的模板中使用,每个模板都有自己独立的控制器。为了data1. data2_ my-component.twig_
通过在服务中包含公共数据对象并将该服务包含在需要特定数据的所有控制器中,我已经在一定程度上解决了这个问题,但这也不是理想的。
如果一个特定的 Twig 组件是完全自封装的,那将是理想的——这意味着我可以将它自由地包含在一个模板中,它会自动获取它自己的所有数据。也就是说,该组件有它自己的专用“控制器”,即 PHP 代码在特定 Twig 模板(组件)呈现时自动运行,而无需明确指示。
在 Symfony 中有这样的可能吗?
GCT1015