2017-11-25 208 views
0

我不知道爲什麼我無法從控制器的變量獲取窗體上的值。從控制器獲取值以形成symfony 3

我的控制器:

public function indexAction(Request $request,$id){ 
    $ac = new Usersacademi(); 
    $form = $this->createForm(UsersacademiType::class,$ac,array('id'=>$id)); 
    $form->handleRequest($request); 

    if($form->isValid()){ 
     $ac->setIdacademicprogram($form->get("idacademicprogram")->getData()); 
     $ac->setIduser($form->get("iduser")->getData()); 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($ac); 
     $flush = $em->flush(); 
    } 
    else{ 
    } 


    return $this->render("AppBundle:admin:apteacher.html.twig", array(
     "form" => $form->createView() 
    )); 
} 

我的形式:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('idacademicprogram', EntityType::class, array(
      "required"=>"required", 
      'class' => 'AppBundle:Academicprogram', 
      'choice_label' => 'name' 
     )) 
     ->add('iduser', NumberType::class, array("required"=>"required", 
      "data" =>$options["id"], 
      "attr"=>array(
      "class" => "form-iduser form-control" 
     ))); 
} 

而且我得到這個錯誤:

The option "id" does not exist. Defined options are: "action", "allow_extra_fields", "attr", "auto_initialize", "block_name", "by_reference", "compound", "constraints", "csrf_field_name", "csrf_message", "csrf_protection", "csrf_token_id", "csrf_token_manager", "data", "data_class", "disabled", "empty_data", "error_bubbling", "error_mapping", "extra_fields_message", "inherit_data", "invalid_message", "invalid_message_parameters", "label", "label_attr", "label_format", "mapped", "method", "post_max_size_message", "property_path", "required", "translation_domain", "trim", "upload_max_size_message", "validation_groups".

+1

你的UsersacademiType :: configureOptions()是什麼樣的? http://symfony.com/doc/3.3/form/create_custom_field_type.html#defining-the-field-type – Cerad

回答

1

申報setDefaultOptions空數組。

public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => 'YourEntity', 
     'id' => array(), 
    )); 
}