<?php
namespace App\Controller\Super;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Batch;
use App\Entity\Category;
use App\Form\CategoryType;
/**
*
* @Route("/super/category/", name="super_category_")
* @author "wendell.zheng <wxzheng@ustc.edu.cn>"
*/
class CategoryController extends BaseController
{
/**
*
* @Route("list/{id}", name="list", requirements={"id"="\d+"})
*/
public function list(Batch $batch): Response
{
return $this->render('super/category/list.html.twig', [
'name' => $this->getLowerName(),
'title' => $batch->getName() . ' - 项目类别列表',
'batch' => $batch,
'entities' => $this->getRepository()
->findby([
'batch' => $batch
])
]);
}
/**
*
* @Route("new/{id}", name="new", requirements={"id"="\d+"})
*/
public function new(Batch $batch, Request $request): Response
{
$category = new Category();
$category->setBatch($batch);
return $this->categoryEdit($category, $batch, $request);
}
/**
*
* @Route("edit/{id}", name="edit", requirements={"id"="\d+"})
*/
public function edit(Category $category, Request $request)
{
$batch = $category->getBatch();
return $this->categoryEdit($category, $batch, $request);
}
/**
*
* @Route("delete/{id}", name="delete", requirements={"id"="\d+"})
*/
public function delete(Category $category): Response
{
$levels = $category->getLevels();
if (count($levels)) {
foreach ($levels as $level) {
$this->em->remove($level);
}
}
return $this->doDelete($category, 'super_category_list', [
'id' => $category->getBatch()
->getId()
]);
}
protected function categoryEdit(Category $category, Batch $batch, Request $request): Response
{
$title = $category->getId() ? '编辑' : '新建';
$form = $this->createForm(CategoryType::class, $category);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$this->em->persist($category);
$this->em->flush();
$this->addFlash('category', '操作成功');
return $this->redirectToRoute('super_category_list', [
'id' => $batch->getId()
]);
}
return $this->render('super/category/edit.html.twig', [
'title' => $batch->getName() . ' - ' . $title . '项目类别',
'batch' => $batch,
'form' => $form->createView()
]);
}
}