Symfony4에서 FormType을 사용하여 Form을 전송합니다.
Item(상품) 테이블
항목 이름
일본어 이름
금형
필수
id
ID(연번)
문자열
〇
이름
상품명
문자열
〇
price
가격
숫자
×
remarks
비고
문자열
×
우선은 엔티티의 작성.
$ php bin/console make:entity
그리고 양식 만들기
$ php bin/console make:form Item
The name of Entity or fully qualified model class name that the new form will be bound to (empty for none):
> Item
I?[K?7?[30;47mtem?[39;49m?8t?[K?7?[30;47mem?[39;49m?8e?[K?7?[30;47mm?[39;49m?8m?[K?7?8
?[34mcreated?[39m: src/Form/ItemType.php
?[37;42m ?[39;49m
?[37;42m Success! ?[39;49m
?[37;42m ?[39;49m
Next: Add fields to your form and start using it.
Find the documentation at ?[33mhttps://symfony.com/doc/current/forms.html?[39m
아래에 파일이 생성되는지 확인
src/Form/ItemType.php
마이그레이션 작성
$ php bin/console make:migration
마이그레이션 실행
(질문에는 yes로 괜찮습니다)
$ php bin/console doctrine:migrations:migrate
테이블이 작성되었는지 확인.
Controller도 작성해 둔다.
※ItemController
$ php bin/console make:controller
ItemType의 buildForm 내용을 편집합니다.
src/Form/ItemType.php
class ItemType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, array(
'label' => '商品名',
))
->add('price', IntegerType::class, array(
'label' => '価格',
'required' => false,
))
->add('remarks', TextareaType::class, array(
'label' => '備考',
'required' => false,
))
->add('保存', SubmitType::class, array())
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Item::class,
]);
}
}
ItemController에 create 메소드를 작성해 둔다.
src/Controller/ItemController.php
/**
* @Route("/item/create", name="item_create")
*/
public function create(Request $request): Response
{
$item = new item();
$form = $this->createForm(ItemType::class, $item);
if ($request->getMethod() == 'POST') {
$form->handleRequest($request);
$item = $form->getData();
$manager = $this->getDoctrine()->getManager();
$manager->persist($item);
$manager->flush();
return $this->redirect('/item');
} else {
return $this->render('item/create.html.twig', [
'title' => 'Item作成',
'form' => $form->createView(),
]);
}
}
create.html.twig에 「{{ form(form) }}」의 기술을 추가한다.
templates/item/create.html.twig
<div class="example-wrapper">
<h2>{{ title }}</h2>
{{ form(form) }}
</div>
Form에서 새 데이터를 만들 수 있는지 확인.
덤
편집과 삭제의 방법도 아래에 기술한다.
(템플릿은 동일하며 문제 없음)
src/Controller/ItemController.php
/**
* @Route("/item/update/{id}", name="item_update")
*/
public function update(Request $request, Item $item): Response
{
$form = $this->createForm(ItemType::class, $item);
if ($request->getMethod() == 'POST') {
$form->handleRequest($request);
$item = $form->getData();
$manager = $this->getDoctrine()->getManager();
$manager->flush();
return $this->redirect('/item');
} else {
return $this->render('item/create.html.twig', [
'title' => 'Item更新',
'form' => $form->createView(),
]);
}
}
/**
* @Route("/item/delete/{id}", name="item_delete")
*/
public function delete(Request $request, Item $item): Response
{
$form = $this->createForm(ItemType::class, $item);
if ($request->getMethod() == 'POST') {
$form->handleRequest($request);
$item = $form->getData();
$manager = $this->getDoctrine()->getManager();
$manager->remove($item);
$manager->flush();
return $this->redirect('/item');
} else {
return $this->render('item/create.html.twig', [
'title' => 'Item削除',
'form' => $form->createView(),
]);
}
}
Reference
이 문제에 관하여(Symfony4에서 FormType을 사용하여 Form을 전송합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/RyotaIhara/items/faab8fa2a8c3f725e736텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)