2011-02-17 67 views
0

我很确定这是我的弱智,无法同时学习语言(PHP)和框架(Symfony),但是...我有一个小的绊脚石I想要克服。我在一个动作中抓住了一些主义对象 - 没有什么重要的,非常简单。然后我使用该动作的模板来显示对象属性 - 没有什么不寻常的。Symfony - 组件中的对象可用性

在布局中,我包含一些用于导航的组件 - 此组件随后调用模型并获取与上一个动作相同的对象 - 但使用该对象的不同属性。

我想要做的是共享我在组件中创建的对象 - 这是做什么最简单的方法?也许将Object存储在一个单独的类中,并从两者中引用它(即某种单例模式方法)?请帮忙 !

回答

0

我想你可以使用一个组件的部分insted。在这种情况下,你有一个特定用户对象的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] 

现在,部分称为partial_名称位于“模块”模块的模板forlder中,将设置$ user变量,这是include_partial的第二个参数,用于告诉:“定义一个名为user的变量,其值为$ user”。

通过这种方式,您可以共享对象的同一实例,而不必重新搜索数据库上的对象。

+0

我知道你在暗示什么 - 它工作正常....但我有多个模板 - 这意味着添加相同的行到所有的模板 - 我想要的是添加到布局,只调用一次。我实际上通过使用我自己的类来完成我想要的任务,并且在那里有一个静态属性来存储对象 - 现在它可以在任何地方使用....我只希望它有一件好事 - 当然可以工作并且速度很快(并且节省额外的数据库查询) - 感谢您的答案 – ManseUK 2011-02-17 14:38:10