2016-06-14 6 views
1

주문을 할 수있는 양식을 만들려고합니다. 내 데이터베이스 스키마는 다음과 같습니다 : 내가 좋아하는 것 Symfony 3 - many many to many

enter image description here

이 같은 양식을 가지고 :

enter image description here

이것은 내가 지금까지 무엇을 가지고 :

$order = new Order(); 

$form = $this->createFormBuilder($order) 
    ->add('naam', TextType::class) 
    ->add('email', EmailType::class) 
    ->add('phoneNumber', TextType::class) 
    ->add('dateTakeout', DateType::class) 
    ->add('hourTakeout', DateType::class) 
    ->add('save', SubmitType::class, array('label' => 'Verzenden')) 
    ->getForm(); 

하지만 제품을 제 형식에 추가하는 데 어려움이 있습니다. 어떻게해야합니까?

UPDATE :

내 제품 및 카테고리의 연결은 다음과 같이이다 : 나는 ID, 이름, 활성화 parentCategoryId와 카테고리 엔티티가

enter image description here

.

내 제품 엔티티에 카테고리 속성이 있습니다.

나는이 같은 카테고리와 제품을 보여 드리고자합니다 :

enter image description here

+0

어떻게 제품을 표시 하시겠습니까? 형태? 어쩌면 드롭 다운 목록일까요? 제품을 선택할 수있는 것처럼? 아니면 제품의 "수량"을 입력 할 수있는 숫자 필드입니까? –

+0

@ AlvinBunk : 모든 제품을 보여주고 싶습니다. 수량을 줄 수 있습니다 (숫자 필드가 많을수록 많음) – nielsv

답변

1

이 양식이 추가 :

use Symfony\Component\Form\Extension\Core\Type\IntegerType; 
... 
->add('product_A', IntegerType::class) 
->add('product_B', IntegerType::class) 
->add('product_C', IntegerType::class) 
->add('product_D', IntegerType::class) 

이 정수, 당신은 간단하게 호출 할 수 있도록 :

$prodA_amount = $form->get('product_A')->getData(); 

값을 얻으려면 ...

+0

어떻게 카테고리별로 그룹화 할 수 있습니까? – nielsv

+0

시각적 인 경우 '

'태그에 ''태그를 사용하고 논리적으로 그룹화하십시오. 어쩌면 내가 성취하고자하는 것을 이해하지 못할 수도 있습니다. –

+0

카테고리에 제품을 그룹화하고 싶습니다 (이미지에서 볼 수 있듯이). 하지만 내 컨트롤러에서이 작업을 수행하고 내 관점에서 각 카테고리 아래에 제품을 표시하려면 어떻게해야합니까? – nielsv

0

나는이 양식 객체를 초기화 할 때

, 당신은 모든 제품 루프가 필요합니다, 엔티티 OrderHasProducts에 대해 여러 형태의 내장으로 참조 (또는 그들 중 일부는 사용자의 요구 사항에 따라)과 Order 새에 추가 예를 들어, 심포니가 폼을 만드는 것에 관해서 마술을하게하십시오.

가 포함 된 양식을 작성하려면 다음을

$builder->add('order_has_products', CollectionType::class, array(
     'entry_type' => OrderHasProduct::class 
)); 

을 그리고 다음과 같은

및 컨트롤러에 뭔가 (워드 프로세서 How to Embed a Collection of Forms 확인)를 OrderHasProduct 엔티티

에 대한 양식을 만듭니다

$order = new Order(); 
foreach($products as $product) : 
// you may wanna create your custom method here 
    $order->addOrderProduct((new OrderHasProduct()) 
         ->setOrder($order) 
         ->setProduct($product)); 
endforeach;