我目前正在为自己开发一个小项目,并且开始使用Symfony 2。现在一切都很顺利,但我确实质疑自己在哪里放置某种“主类”。Symfyon 2何处放置一个被多个控制器功能使用的类
问题是,我要在多个页面/控制器上使用“相同类型”的数据。例如,我想显示用户在页面X上创建的“帖子”数量,但也会在页面Y上显示它。
我实际上想要一个函数,可以说“getUserData($ user)”,即可用于多个控制器。我不想在两个页面上使用相同的控制器,因为除了几个部分外,它们完全不同。
这是助手,服务还是依赖注入?或者我应该只扩展bundle的默认控制器?
我拥有的功能是这样的:
public function getPostsByUserTopic($value, $currentTopic)
{
$em = $this->getDoctrine()->getManager();
$posts = $em->getRepository('DevrantStatBundle:Coffeecorner')->findBy(
array('user' => $value,
'topicid' => $currentTopic),
array('time' => 'ASC')
);
return $posts;
}
public function getPostsByUser($value)
{
$em = $this->getDoctrine()->getManager();
$posts = $em->getRepository('DevrantStatBundle:Coffeecorner')->findBy(
array('user' => $value),
array('time' => 'ASC')
);
return $posts;
}
public function countPostsByUserTopic($value, $currentTopic)
{
$em = $this->getDoctrine()->getManager();
$repository = $this->getDoctrine()->getRepository('DevrantStatBundle:Coffeecorner');
$parameters = array(
'user' => $value,
'topicid' => $currentTopic,
);
$query = $em->createQuery(
'SELECT COUNT(u.user) as aantal, u.user
FROM DevrantStatBundle:Coffeecorner u
WHERE u.user = :user
AND u.topicid = :topicid
GROUP BY u.user, u.topicid
ORDER BY aantal DESC'
)->setParameters($parameters);
$count = $query->getResult();
return $count[0];
}
并没有真正意义上的我。我的函数不会启动某种被用来做事情的对象。例如,我的控制器传递一些信息,如用户,应收集的数据类型以及函数返回的数据。我不打算使用该对象来实例更新用户。 –