2016-07-13 3 views
1

У меня есть форма, которая должна позволить, чтобы добавить элемент (устройство) в категории (марки). Ниже приведена часть контроллера, который создает форму (вещь в $ brand не работает, но я это выясню позже). Ниже это код, который создает мою форму.Symfony3: значение пропуском Форма EntityType быть выбрано значение по умолчанию

Я хочу, чтобы мой Выбрать ящик (который является EntityType из Марки и показывают все возможные бренды) также показывает по умолчанию выбранного значения, основанной на переменном передается контроллером.

Два вопроса:

  1. , где я могу передать это значение вниз?
  2. Как установить параметр по умолчанию для поля выбора EntityType? Я ожидал, что это «данные», но даже жесткое кодирование числа там не сработает.

Это контроллер бит:

public function createDevice(Request $request, $brand) { 
    $device = new Device(); 
    $form = $this->createForm(DeviceType::class, $device); // where do I pass the value of the default option? 
    $form->handleRequest($request); 

и типа:

class DeviceType extends AbstractType { 

    public function buildForm(FormBuilderInterface $builder, array $options) { 

     $builder 
      ->add('brand', EntityType::class, array(
       'class' => 'AppBundle:Brand', 
       'choice_label' => 'name', 
       'choice_value' => 'id', 
       'data' => '2' // does not set default value to second item! 
+0

Hi, в вашем коде выше вы не можете пройти в '$ brand' как объект через TWIG; но вы можете через контроллер. Просто пытаюсь помочь тебе. Если это был идентификатор бренда, вы можете использовать его в построителе запросов. –

+0

неуверенный, что вы имеете в виду? Думаю, я не пытаюсь передать объекты на ветку. Я немного новичок во всем этом :) – bluppfisk

+0

Привет там bluppfisk. У вас есть код с функцией: 'createDevice (Request $ request, $ brand)' и переменная '$ brand'. Вы пытаетесь передать объект бренда в функцию? Если это так, это должен быть объект. –

ответ

1

Просто установите Марка в устройство.

$em = $this->getDoctrine()->getManager(); 
$brand = $em->getRepository('AppBundle:Brand')->find(2); 
$device = new Device(); 
$device->setBrand($brand); 
+0

да это, спасибо! – bluppfisk

Смежные вопросы