Symfony2の場合、コードの重複を避けるためにコントローラーで行うことは、Controller.php
私がよく使用する関数を配置するというクラスを作成することです。
例えば :
<?php
namespace YourProject\Bundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller as BaseController;
/**
* Base Controller for xxBundle
*/
class Controller extends BaseController
{
/**
* Get repository
*
* @param string $class class
*
* @return Doctrine\ORM\EntityRepository
*/
protected function getRepository($class)
{
return $this->getDoctrine()->getEntityManager()->getRepository($class);
}
/**
* Set flash
*
* @param string $type type
* @param string $text text
*/
protected function setFlash($type, $text)
{
$this->get('session')->getFlashBag()->add($type, $text);
}
/**
* Returns the pager
*
* @param integer $page Page
* @param integer $perPage Max per page
* @param Doctrine_Query $query Query
*
* @return \Pagination
*/
public function getPager($page = 1, $perPage = 10, $query = null)
{
$paginator = $this->get('knp_paginator');
$pagination = $paginator->paginate(
$query,
$this->get('request')->query->get('page', 1),
$perPage
);
return $pagination;
}
このコントローラーを作成したら、アプリコントローラーを作成したコントローラーにする必要がありますextends
。
そうすれば、一般的な方法のコードとエイリアスの重複を避けることができます。