0
清理我的控制器代碼我想將「newPostAction」移動到服務中。我得到的問題是,現在我無法將服務兩個變量的功能傳遞給控制器。我使用這個函數來創建一個表單,並從表單的帖子中獲取slug並渲染它。我不知道如何將它傳遞給控制器。我嘗試使用「list()」函數,但它沒有得到正確的信息。
如何從控制器內部調用pos的「slug」?
這裏是控制器代碼:
/**
* @param Request $request
* @return array
*
* @Route("/new/_post", name="_blog_backend_post_new")
* @Template("BlogBundle:Backend/Post:new.html.twig")
*/
public function newPostAction(Request $request)
{
$form_post = $this->getPostManager()->createPost($request);
$slug_post = ¿How do I get it from inside the createPost()?;
if (true === $form_post)
{
$this->get('session')->getFlashBag()->add('success', 'Your post was submitted successfully');
return $this->redirect($this->generateUrl('blog_blog_post_show', array('slug' => $slug_post)));
}
return array(
'post_slug' => $slug_post,
'form_post' => $form_post->createView()
);
}
這裏是PostManager服務創造新的職位實體:
/**
* Create and validate a new Post
*
* @param Request $request
* @return bool|FormInterface
*/
public function createPost (Request $request)
{
$post = new Post();
$post->setAuthor($this->um->getloggedUser());
$form_post = $this->formFactory->create(new PostType(), $post);
$form_post->handleRequest($request);
$slug_post = $post->getSlug();
if ($form_post->isValid())
{
$this->em->persist($post);
$this->em->flush();
return true;
}
return $form_post;
}
它不工作。無論如何,謝謝你的時間。然而,當我提交表單時,表單沒有傳遞給數據庫,也沒有被重定向。看來返回將它轉換爲一個簡單的字符串,我相信表單的內容會丟失。任何建議? – Garces
@Garces謝謝,我已經更新了答案。 – acontell