如何在 Symfony 中跨视图共享对象?
我在我的实体中实现了 Serializable 类,以便可以将对象存储在会话中。然而,由于我的实体包含抽象方法,我需要在我的类中实现可序列化方法,我相信这将是我最后的手段。
在那之前,我想找到一个替代解决方案,而不是将对象存储在我的数据库中的临时表中(这与不做任何事情完全相同,因为我需要在每个显示视图的控制器中调用数据库)
这是我的场景:
我有两个文件:layout.html.twig
和sidebar.html.twig
我的 DefaultController 中有一个名为buildSidebar()
如下所示的方法
public function buildSidebar($userId = 0) {
$projects = $this->getDoctrine()->getRepository('SuperBundle:Projects')->findBy(array('userId' => $userId), array('cratedDate' => DESC), 10);
return $this->render(
'SuperBundle:sidebar.html.twig',
array('projects' => $projects)
);
}
然后在我的layout.html.twig
文件中,我在第 77 行有以下代码块:
{% render controller("SuperBundle:Default:buildSidebar", {'userId': 37}) %}
当我测试它时,symfony 抛出一个异常说:
function controller doesn't exist in SuperBundle::layout.html.twig in line 77
我也尝试以这种方式嵌入控制器:
{{ render(controller("SuperBundle:Default:buildSidebar", {'userId': 37}) }}
此方法抛出异常unexpected name of value controller
:
{{ render controller("SuperBundle:Default:buildSidebar", {'userId': 37}) }}
我也尝试过这种方式,结果相同function controller does not exist
:
{% render(controller("SuperBundle:Default:buildSidebar", {'userId': 37}) %}
我错过了什么?我遵循了 Symfony 的文档,但其中也没有任何帮助。