我很确定这是我的虚弱心灵无法同时学习语言(PHP)和框架(Symfony)但是...我有一个小障碍我想克服。我在一个动作中抓住了一些Doctrine Objects - 没什么大不了的,非常简单明了。然后我使用该操作的模板来显示对象属性 - 再没有什么不寻常的。
在布局中我包含了一些用于导航的组件 - 然后该组件调用Model并抓取与前一个操作相同的Object - 但使用该对象的不同属性。
我想要做的是分享我在Action中使用Component创建的Object - 最简单的方法是什么?也许将Object存储在一个单独的类中并从两者中引用它(即某种单例模式方法)?请帮忙!
答案 0 :(得分:0)
我猜你可以使用组件的部分内容。想象一下这个场景,你有一个特定User对象的showAction,并且你希望在用户登录时使用stadistics模板在你的所有应用程序中显示。
首先,创建一个executeShow和ashowSuccess.php模板,它看起来像:
动作:
public function executeShow(sfWebRequest $request)
{//the session loggedin user, suppose he's logged in
$this->user = $this->getUser();
}
模板:
[..blablabla...htmlcode]
<?php echo $user ?>
<?php include_partial('module/partial_name',array('user',$user))?>
[..blablabla...morehtmlcode]
现在,位于“模块”模块的模板forlder中的部分名为partial_name的内容将是一个$ user变量setted,这是include_partial的第二个参数,告诉:“使用值定义一个名为user的变量那是$ user“。
这样,您可以共享对象的同一实例,而无需在数据库上重新搜索对象。