Php Symfony2:控制器的正确使用

Php Symfony2:控制器的正确使用,php,symfony,controller,Php,Symfony,Controller,我正在构建几个页面的应用程序。想问一下使用控制器的正确方法是什么 每个页面都有一个控制器?或者将页面作为方法放在同一个控制器中?在我的例子中,我使用的是数据库,我真的不能将所有内容都保存在一个方法中。在本例中,我创建了Helper类,帮助我保存和生成其中的一些代码 控制器: class DefaultController extends Controller { //main method that performs as page public function indexA

我正在构建几个页面的应用程序。想问一下使用控制器的正确方法是什么

每个页面都有一个控制器?或者将页面作为方法放在同一个控制器中?在我的例子中,我使用的是数据库,我真的不能将所有内容都保存在一个方法中。在本例中,我创建了Helper类,帮助我保存和生成其中的一些代码

控制器:

class DefaultController extends Controller
{

    //main method that performs as page
    public function indexAction()
    {
        $helper = new IgnasHelper();
    $profile = $this->profileQuery($helper);

    return $this->render(
        'IgnasIgnasBundle:Default:index.html.twig',
        array('profile' => $profile)
        );
    }

    //method that returns database's data back to main index method
    public function profileQuery(IgnasHelper $helper)
    {
        $em = $this->getDoctrine()->getManager();
        $selectAll = array('p.id', 'p.first', 'p.last', 'p.birth', 'p.country', 'p.city', 'p.email');
        $profile = $em->createQueryBuilder()
            ->select($selectAll)
            ->from('IgnasIgnasBundle:Profilis', 'p')
            ->getQuery()
            ->getResult();

        return $helper->profileArray($profile);
    }
}
现在是助手类:

public function profileArray(array $profile)
{
    $id = $profile[0]['id'];
    $first = $profile[0]['first'];
    $last = $profile[0]['last'];
    $birth = $profile[0]['birth'];
    $country = $profile[0]['country'];
    $city = $profile[0]['city'];
    $email = $profile[0]['email'];

    return array(
        'id' => $id,
        'first' => $first,
        'last' => $last,
        'birth' => $birth,
        'country' => $country,
        'city' => $city,
        'email' => $email,
    );
}
所以对于另一个页面,我正在考虑制作另一个控制器来执行它。我是否正确使用控制器?

也许您可以使用

控制器是为特定的操作而设计的:例如,在博客中,你可以拥有ArticleController、CategoryController等

在一个控制器中可以有许多方法,但如果方法具有相同的主题,则效果更好

<?php
class CategoryController extends Controller
{

    function indexAction() { }
    function listArticleAction($catID) { }
    function createAction($catID) { }
    function renameAction($catID) { }
    [...]
}

我问的是控制器的正确使用,而不是数据库:)。我明白这里关于存储库的要点,但我找不到答案,是应该在同一个控制器中保留1个page=1方法,还是应该在同一个控制器中保留1个page=1方法*所以实际上我可以为每个页面创建一个单独的控制器,对吗?:)是的,这很好,但是您将有很多控制器。对于profileArray函数,您只能返回$profile[0];你是对的,我会这么做:)
<?php
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository("YourBundle:YourEntity");
$list = $repo->whateverYouWantToDo();