public function createAction(Request $request) { $blogs = $this->getDoctrine()->getRepository('DataBundle:Blog')->findAll(); $tags = $this->getDoctrine()->getRepository('DataBundle:Tag')->findAll(); $pages = $this->getDoctrine()->getRepository('DataBundle:Page')->findBy([], ['ordering' => 'asc']); if ($request->get('sent', 0) == 1) { $page = new Page(); $page->setTitle($request->get('title'))->setSlug($request->get('slug'))->setContent($request->get('content'))->setMetaTitle($request->get('meta_title'))->setMetaDescription($request->get('meta_description'))->setActive($request->get('active') == 'true' ? true : false)->setHidden($request->get('hidden') == 'true' ? true : false)->setEnableTwig(true)->setOrdering(count($pages)); //set parent if ($request->get('parent', 0) != 0) { $parent = $this->getDoctrine()->getRepository('DataBundle:Page')->findOneById($request->get('parent')); if (!$parent) { //error } $page->setParent($parent); //reorder following entries $upper = $this->getDoctrine()->getRepository('DataBundle:Page')->findBy(['ordering' => '>= ' . $parent->getOrdering() + 1]); foreach ($upper as $u) { $u->setOrdering($u->getOrdering() + 1); } $page->setOrdering($parent->getOrdering()); $page->setSlug($parent->getSlug() . '/' . $page->getSlug()); } //set selected blog if ($request->get('blog', 0) != 0) { $blog = $this->getDoctrine()->getRepository('DataBundle:Blog')->findOneById($request->get('blog', 0)); if (!$blog) { //error } $page->setBlog($blog); $page->setIsBlog(true); $page->setIsBlogTag(false); } //set selected tag if ($request->get('tag', 0) != 0) { $tag = $this->getDoctrine()->getRepository('DataBundle:Tag')->findOneById($request->get('tag', 0)); if (!$tag) { //error } $page->setTag($tag); $page->setIsBlogTag(true); $page->setIsBlog(false); } //validate $em = $this->getDoctrine()->getManager(); $em->persist($page); $em->flush(); //new page gets inserted on 0 //restore order $this->get('app.backend.page')->restoreOrder(); //clear cache $this->clearRoutingCache(); return $this->redirectToRoute('backend_pages'); } return $this->render('BackendBundle:Page:create.html.twig', ['blogs' => $blogs, 'tags' => $tags, 'all_pages' => $pages]); }