2014-02-25 2 views
6

У меня есть пользовательская форма, которая представляет собой сочетание различных субъектов в то, что имеет смысл для конечного пользователя с помощью следующего кода:Symfony2: form exception - Варианты «class», «query_builder» не существуют. Известные варианты:

$form = $this->container->get('form.factory')->createNamedBuilder(null, 'form') 
    ->add('country', 'entity', array(
      'class'   => 'ACME\MyBundle\Entity\Country', 
      'query_builder' => function(EntityRepository $er) { 
       return $er->createQueryBuilder('c')->orderBy('c.en_name', 'ASC'); 
      }, 
      'label'   => '* Country', 
      'required'  => true 
     ), 
    ) 

кода кажется хорошо, даже при обращении к документации http://symfony.com/doc/current/reference/forms/types/entity.html#reference-forms-entity-choices, но я держать получаю ошибку ниже:

The options "class", "query_builder" do not exist. Known options are: "action", 
"attr", "auto_initialize", "block_name", "by_reference", "cascade_validation", 
"choice_list", "choices", "compound", "constraints", "csrf_field_name", 
"csrf_message", "csrf_protection", "csrf_provider", "csrf_token_id", 
"csrf_token_manager", "data", "data_class", "disabled", "empty_data", "empty_value", 
"error_bubbling", "error_mapping", "expanded", "extra_fields_message", "inherit_data", 
"intention", "invalid_message", "invalid_message_parameters", "js_validation", 
"label", "label_attr", "label_render", "mapped", "max_length", "method", 
"multiple", "pattern", "post_max_size_message", "preferred_choices", 
"property_path", "read_only", "required", "sonata_admin", "sonata_field_description", 
"translation_domain", "trim", "validation_groups", "virtual" 

Я не знаю, что мне не хватает, и был бы признателен за вашу помощь

+0

У вас есть "использовать Doctrine \ ORM \ EntityRepository;" в начале файла? – repincln

+0

Да, у меня есть это –

+0

Возможно, тип формы «форма» недействительна – darkomen

ответ

2

Я побежал в этот вопрос в последнее время с использованием Symfony 3. тип поля должны б e EntityType использовать параметры класса и query_builder. По неизвестным причинам Symfony видел мой как ChoiceType, поэтому я решил свою проблему, объявив тип поля. Попробуйте это:

Добавьте следующее использование ниже имен:

use Symfony\Bridge\Doctrine\Form\Type\EntityType; 

и добавить поле, как это:

->add('country', EntityType::class, array(
     'class'   => 'ACME\MyBundle\Entity\Country', 
     'query_builder' => function(EntityRepository $er) { 
      return $er->createQueryBuilder('c')->orderBy('c.en_name', 'ASC'); 
     }, 
     'label'   => '* Country', 
     'required'  => true 
    ), 
) 
Смежные вопросы