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