我目前正在爲自己開發一個小項目,並且開始使用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];
}
並沒有真正意義上的我。我的函數不會啓動某種被用來做事情的對象。例如,我的控制器傳遞一些信息,如用戶,應收集的數據類型以及函數返回的數據。我不打算使用該對象來實例更新用戶。 –