所以我一直在嘗試一段時間來修改symfonys基礎crud系統以滿足我的需求。但是我不明白爲什麼在獲取表單中他們定義了實體,然後在他們的帖子中他們再次寫入實體?如何修改symfony crud
我有一個關係,將1個工作與多個工作項目聯繫起來,我想要修改的是創建'工作',以便從工作項目創建工作,並通過dash_work_new路徑傳遞jobId。
選項1
我設法是什麼,從通過可變負載我的工作實體,並把我的工作項目,像這樣實體 - $> setWorkJob()。大?否,因爲提交dash_work_create路由被調用,爲什麼?工作實體又被定義了嗎?因此擦拭任何我在newAction()方法
選項2
所以我想我會通過變量作爲隱藏字段然後加載上提交的所有數據,但掛在createCreateForm是設置在createAction中重新定義,所以如果我試圖通過createCreateForm($ entity,$ jobId)在新操作中傳遞一個變量。我也需要在createAction中定義它,但是我沒有.... AH%#@@ EXPLETIVE EXPLETIVE EXPLETIVE
AH沮喪和缺乏理解。參考由console crud生成的symfony workController。我留在,從@route新去@route新/ {}的jobId
你的幫助將非常感謝
/**
* Creates a new Work entity.
*
* @Route("/", name="dash_work_create")
* @Method("POST")
* @Template("LaelapsInvoiceBundle:Work:new.html.twig")
*/
public function createAction(Request $request)
{
$entity = new Work();
$form = $this->createCreateForm($entity);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->redirect($this->generateUrl('dash_job'));
}
return array(
'entity' => $entity,
'form' => $form->createView(),
);
}
/**
* Creates a form to create a Work entity.
*
* @param Work $entity The entity
*
* @return \Symfony\Component\Form\Form The form
*/
private function createCreateForm(Work $entity)
{
$form = $this->createForm(new WorkType(), $entity, array(
'action' => $this->generateUrl('dash_work_create'),
'method' => 'POST',
));
$form->add('submit', 'submit', array('label' => 'Create'));
return $form;
}
/**
* Displays a form to create a new Work entity.
*
* @Route("/new/{jobId}", name="dash_work_new")
* @Method("GET")
* @Template()
*/
public function newAction($jobId)
{
$entity = new Work();
$form = $this->createCreateForm($entity);
return array(
'entity' => $entity,
'form' => $form->createView(),
);
}
- 你將形式動作設置爲該路線,這就是爲什麼。 – malcolm
我意識到malcolm,這是控制器在使用php app/console doctrine創建時的默認行爲:generate:crud – hounded