/** * @Route("/article/add",name="articleadd") * @Template("TarsierAdminBundle:article:edit.html.twig") */ public function articleAddAction() { if (!$this->isLogin()) { return $this->redirect($this->generateUrl('adminlogin')); } $userName = $this->getRequest()->cookies->get('userName'); $article = new article(); $form = $this->createFormBuilder($article, ['attr' => ['id' => 'form-save', 'class' => 'form-save']])->add('title', 'text', ['label_attr' => ['class' => ''], 'attr' => ['class' => 'form-control input-signin', 'placeholder' => "Article Title"]])->add('status', 'choice', ['choices' => ['0' => 'Draft', '1' => 'Release', '2' => 'Delete'], 'label_attr' => ['class' => ''], 'attr' => ['class' => 'form-control input-signin']])->add('tag', 'text', ['label_attr' => ['class' => ''], 'attr' => ['class' => 'form-control input-signin']])->add('top', 'choice', ['choices' => ['0' => 'Not top article', '1' => 'Is top article'], 'label_attr' => ['class' => ''], 'attr' => ['class' => 'form-control input-signin']])->add('sort', 'integer', ['label_attr' => ['class' => ''], 'attr' => ['class' => 'form-control input-signin', 'placeholder' => "Article Sort"]])->add('front_cover', 'file', ['label_attr' => ['class' => ''], 'attr' => ['class' => 'form-control input-signin'], 'required' => 0])->add('thumb', 'file', ['label_attr' => ['class' => ''], 'attr' => ['class' => 'form-control input-signin'], 'required' => 0])->add('content', 'textarea', ['label_attr' => ['class' => ''], 'attr' => ['id' => 'editor', 'class' => 'form-control input-signin', 'placeholder' => "Article Content"], 'required' => 0])->add('Save', 'submit', ['attr' => ['class' => 'btn btn-lg btn-primary btn-block form-save-btn']])->getForm(); $form->handleRequest($this->getRequest()); if ($form->isValid()) { $photo = $this->dealPhotoProcess($form->get('front_cover')->getData(), $form->get('thumb')->getData()); $front_cover = $photo['front_cover']; $thumb = $photo['thumb']; $em = $this->getEm(); $sem = $this->getEm('sqlite'); $user = $this->getUserRepository()->findOneBy(['username' => $userName]); $ret_form = $this->getRequest()->get('form'); $tags = explode(',', str_replace(',', ',', $ret_form['tag'])); $tags_em = $this->getTagsRepository(); $tags_list = []; foreach ($tags as $t) { $tag = $tags_em->findOneBy(['name' => $t]); if (empty($tag)) { $tag = new tags(); $tag->setName($t); $tag->setClick(1); } else { $tag->setClick(count($tag->getArticle()) + 1); } $em->persist($tag); $em->flush(); $tags_list[] = $tag; } $article = new article(); $article->setTitle($ret_form['title']); $article->setCreateTime(time()); $article->setSort($ret_form['sort']); $article->setStatus($ret_form['status']); $article->setTop($ret_form['top']); $article->setClick(0); foreach ($tags_list as $t) { $article->addTag($t); } $article->setContent($ret_form['content']); $article->setUser($user); $em->persist($article); $em->flush(); $articleimg = new articleimg(); $articleimg->setFrontCover($front_cover); $articleimg->setThumb($thumb); $articleimg->setArticleId($article->getId()); $sem->persist($articleimg); $sem->flush(); return $this->redirect($this->generateUrl('articlelist')); } $data = ['save_form' => $form->createView(), 'userName' => $userName, 'nav' => 'article', 'id' => 0]; return $data; }