2017-12-21 25 views
0

내가이 같은 빌더 옵션을 말한다. 나뭇 가지로 다음과 같이 위젯을 작성할 수 있습니다.EntityType을 사용하여 선택이 빌드 될 때 Twig에서 값을 설정하는 방법은 무엇입니까?</p> <pre><code>->add('choice', ChoiceType::class, [ 'choices' => [ 'Cheese' => 'cheese', 'Plain' => 'plain ] ]) </code></pre> <p>그리고 이제 우리는 이미 일반을 선택한 데이터베이스에이 옵션을 편집하는 가정 해 봅시다 : 양식에서

{{ form_widget(BurgerForm.choice, { 
    'value': burger.type 
}) }} 

이렇게하면 select의 사전 선택된 값이 데이터베이스의 값이됩니다. 그러나 EntityType을 사용하여 동일한 작업을 수행하는 경우 :

->add('choice', EntityType::class, [ 
    'class' => 'AppBundle:BurgersTypes', 
    'choice_label' => 'type' 
]) 

그리고 동일한 나뭇 가지를 사용하면 데이터베이스에서 옵션을 미리 선택하지 않습니다. 데이터베이스에서 값을 가져 와서 위젯의 미리 선택된 값으로 표시하려면 어떻게해야합니까?

답변

0

이 양식의 값을 미리 선택한다는 것은 기본 데이터의 값을 설정한다는 의미입니다. 귀하의 경우 컨트롤러는 다음과 같이 표시되어야합니다.

// src/AppBundle/Controller/MyController.php 

namespace AppBundle\Controller\MyController; 

use AppBundle\Entity\Order; 
use AppBundle\Entity\BurgersTypes; 
use AppBundle\Form\Type\FormType; 
use Symfony\Component\HttpFoundation\Request; 

public function formAction(Request $request) 
{ 
    $obj = new Order(); 
    $defaultBurgerChoice = new BurgersTypes('cheese'); 
    $ob->setChoice($defaultBurgerChoice); 
    $form = $this->create(FormType::class, $obj); 

    $form->handleRequest($request); 

    ... 

    // Now, if the form needs to render a value for `choice`, 
    // it will have the value of BurgerForm.choice determined 
    // intentionally - by your default, or overridden and 
    // handled in the request! 
    return [ 
     'BurgerForm' => $form->createView() 
    ] 
} 
+0

내가 그렇게 한 후에 나뭇 가지 모양은 어떻게 생겼을까요? – user3558417

+0

그냥'{{form_widget (BurgerForm.choice)}}':) –