我用Symfony 3创建了一个CRUD,它允许我创建具有一些特殊性的不同任务。我想创建一个允许具有特定角色的人通过单击按钮来改变任务状态的功能,该按钮将在视图中显示,如下所示
{{form_start(missionInProgress) }}
<input type="submit" value="Submit" />
{{form_end(missionInProgress) }}
由于我是一个真正的新手而且我无法在Google上找到具体的例子,我尝试了很多东西,但到目前为止都没有。我尝试创建一个公共函数,当有人点击输入按钮时,它会修改任务的状态
更新任务状态的公共功能:
/**
* @Route("/{id}/encours", name="mission_encours")
* @Security has_role('ROLE_RECRUTEUR')
* @Method("POST")
*/
public function enCoursAction(Request $request, Mission $mission){
$form = $this->missionInProgress($mission);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid()){
$em = $this->getDoctrine()->getManager();
$mission->setStatut("En cours");
$em->persist($mission);
}
}
我还试图创建一个私有函数,就像允许从任何地方删除任务一样。
**调用公共函数的私有函数:**
/**
* @param Mission $mission
* @Security has_role('ROLE_RECRUTEUR')
* @return \Symfony\Component\Form\Form The form
*/
private function missionInProgress(Mission $mission){
$this->createFormBuilder()
->setAction($this->generateUrl('mission_encours', array('id' => $mission->getId())))
->setMethod('POST')
->getForm();
}
关注&#34; createDeleteForm&#34;例如,我在showAction中实现了它,如下所示:
/**
* Finds and displays a Mission entity.
*
* @Route("/{id}", name="mission_show")
* @Method("GET")
*/
public function showAction(Mission $mission)
{
$deleteForm = $this->createDeleteForm($mission);
$enCours = $this->missionInProgress($mission); /* There */
return $this->render('mission/show.html.twig', array(
'mission' => $mission,
'delete_form' => $deleteForm->createView(),
'missionInProgress' => $enCours->createView(), /* And there */
));
}
但是当我试图看到结果时,我收到以下错误:
错误:在null
上调用成员函数createView()
显然没有任何东西进入missionInProgress(),但我无法理解为什么以及如何使这个该死的东西起作用。我也不认为我所做的一切都是必要的,但我想如果我这样做,我可能会增加我的成功机会......
有人有想法吗?
提前谢谢
答案 0 :(得分:1)
尝试在return
方法
missionInProgress()