Setup Backend Controller
Category Controller example
<?php
namespace ErbozetaBundle\Controller;
use ErbozetaBundle\Entity\Category;
use ErbozetaBundle\Entity\CategoryLang;
use Mrapps\BackendBundle\Annotation\Sidebar;
use Mrapps\BackendBundle\Classes\Utils as BackendUtils;
use Mrapps\BackendBundle\Controller\BaseBackendController;
use Mrapps\BackendBundle\Entity\TranslatedEntity;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
/**
* @Route("{_locale}/panel/category")
* @Sidebar("categorie", label="Categorie", visible=true)
*/
class CategoryController
extends BaseBackendController
{
attributes
private $pageTitle = 'Manage Categories';
private $tableColumns = [[
'title' => 'ID',
'type' => 'id',
'name' => 'id',
'filterable' => false,
'sortable' => false,
'visible' => true,
],...];
private $defaultSorting = [
'id' => 'asc'
];
private $defaultFilter = [];
private $breadcrumb = [
'type' => 'url',
'url' => 'asda'
];
Create new category
/**
* @Route("/new", name="app_backend_categorie_new")
* @Method({"GET"})
* @Sidebar(
* "new_categorie",
* label="Crea Categorie",
* parent="categorie",
* visible=true,
* weight=3,
* icon="icon-layers"
* )
*/
public function newAction(Request $request)
{
return $this->forward('MrappsBackendBundle:Default:__new', [
'confirmSave' => false,
'create' => false,
'edit' => true,
'fields' => $this->buildSimpleForm(),
'linkBreadcrumb' => $this->breadcrumb,
'linkEdit' => $this->generateUrl('app_backend_categorie_edit'),
'linkNew' => $this->generateUrl('app_backend_categorie_new'),
'linkSave' => $this->generateUrl('app_backend_categorie_save'),
'request' => $request,
'title' => $this->pageTitle,
]);
}
List all categories
/**
* @Route("/list", name="app_backend_categorie_list")
* @Method({"GET"})
* @Sidebar(
* "list_categorie",
* label="Elenco Categorie",
* parent="categorie",
* visible=true,
* weight=3,
* icon="icon-layers"
* )
*/
public function listAction(Request $request)
{
return $this->forward('MrappsBackendBundle:Default:__list', array(
'defaultFilter' => $this->defaultFilter,
'defaultSorting' => $this->defaultSorting,
'linkAction' => null,
'linkBreadcrumb' => $this->breadcrumb,
'linkData' => $this->generateUrl('app_backend_categorie_data'),
'linkDelete' => $this->generateUrl('app_backend_categorie_delete'),
'linkEdit' => $this->generateUrl('app_backend_categorie_edit'),
'linkNew' => null,
'request' => $request,
'tableColumns' => $this->tableColumns,
'title' => $this->pageTitle,
));
}
Save action
/**
* @Route("/save", name="app_backend_categorie_save")
* @Method({"POST"})
*/
public function saveAction(Request $request);
Delete action
/**
* @Route("/delete", name="app_backend_categorie_delete")
* @Method({"DELETE"})
*/
public function removeAction(Request $request, $id = null);
Edit category
/**
* @Route("/edit/{id}", name="app_backend_categorie_edit")
* @Method({"GET"})
*/
public function editAction(
Request $request,
$id = null
) {
$category = $this->getDoctrine()
->getManager()
->getRepository('ErbozetaBundle:Category')
->findOneBy([
'id' => $id,
]);
return $this->forward('MrappsBackendBundle:Default:__new', [
'confirmSave' => false,
'create' => false,
'edit' => true,
'fields' => $this->buildSimpleForm($category),
'linkBreadcrumb' => $this->breadcrumb,
'linkEdit' => null,
'linkNew' => $this->generateUrl('app_backend_categorie_new'),
'linkSave' => $this->generateUrl('app_backend_categorie_save'),
'request' => $request,
'title' => $this->pageTitle,
]);
}
Show item
/**
* @Route("/data", name="app_backend_categorie_data")
* @Method({"GET"})
*/
public function dataAction(Request $request){
$filters = !empty($request->get('filter')) ? $request->get('filter') : [];
$sorting = !empty($request->get('sorting')) ? $request->get('sorting') : [];
$count = $this->get("mrapps.backend.entities_provider")
->setPrimaryEntityName('Bundle:Entity', 'e')
->setFilters($filters, 'e')
->setSorting($sorting, 'e')
->countResults();
$data = $this->get("mrapps.backend.entities_provider")
->setLimit($request->get('count'))
->setPage($request->get('page'))
->getResult();
...
return new JsonResponse(
[
"success" => true,
"data" => [
"total" => $count,
"result" => $jsonResponse,
]
]
);
}
End of class
}