1
내가 예를 들어 페이지 편집을 처리하는 컨트롤러가를 만듭니다.
/**
* Update a page
* @ParamConverter("page", class="AcmeBundle:Page", options={"id" = "page_id"})
*/
public function editAction(Page $page, Request $request)
{
$form = $this->createForm(PageType::class, $page);
if ($form->handleRequest($request)->isSubmitted() && $form->isValid()) {
$this->getDoctrine()->getManager()->flush();
$this->addFlash('success', 'page_admin.flash.updated');
if ($form->get('save_and_stay')->isClicked()) {
return $this->redirect($request->headers->get('referer'));
}
else {
return $this->redirectToRoute('acme_page_admin_index');
}
}
return $this->render('AcmeBundle:PageAdmin:edit.html.twig', array(
'form' => $form->createView()
));
}
내 양식이 개 제출 버튼 한 페이지를 저장하고 페이지를 저장하고 편집 형태를 유지하기 위해 다시 인덱스, 하나 올을 포함한다.
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('headline')
->add('body')
->add('save', SubmitType::class)
->add('save_and_stay', SubmitType::class)
;
}
질문 양식을 제출
, 단순히 클릭 된 버튼을 확인하고 적절한 조치를 수행합니다. 그러나 나는 이것을 위해 봉사 할 필요가 있다고 생각합니다. 정확히 어떻게 해야할지 모르겠습니다. 이름 (acme.form.save_and_stay
?), 저장 위치 (AcmeBundle\Service\SaveAndStay
?).
나는 Symfony 응용 프로그램을 서비스로 구성하고 언제 사용할지 이해하기가 어렵다.
사용자가 F5를 사용하여 양식을 다시 보낼 수 있다고 생각했지만 Symfony가이를 방지하기에 충분히 똑똑합니다. 그래서이 경우 어떤 서비스도 필요하지 않습니다. 그러나 컨트롤러에 20 줄 미만의 코드가 포함되어야한다고 읽었습니다. 이 작은 형태로 12 줄의 코드가 있습니다. 확인과 같은 물건을 더 만들어야한다면 어떨까요? – AlexisWbr
확인 및 확인을 위해 http://symfony.com/doc/current/book/validation.html –
에서 읽으십시오. 20 줄 미만의 컨트롤러에 대한 "엄격한 규칙"은 다소 극단적이라고 생각합니다. 컨트롤러는 오히려 "얇은"것이어야하지만 독단적으로 20 라인 만이 유용한 규칙이라고 생각하지 않습니다. 서비스에 대한 자세한 내용은 http://symfony.com/doc/current/book/service_container.html을 확인하십시오. 실제로 이해하는 데 약간의 시간이 걸리지 만 몇 번만 사용하면됩니다. 그것의 걸림 새를 얻는 시작하십시오. –