2017-02-08 5 views
0

は、私がDBからデータをロードするにはどうすればよい私は私のフォームでの選択ボックスにエンティティタイプを読み込むことができますどのように私は知らない

私のエンティティタイプを選択ボックスします

 $em = $this->getDoctrine()->getManager(); 
     $entity = new MyEntity(); 
     // $form = $this->createForm(MyEntityType::class, $entity);  
     $form = $this->createForm(new KitchenType($this->getDoctrine()->getManager()), $entity); 
     $form->handleRequest($request); 

     if ($form->isSubmitted() && $form->isValid()) { 
      $em->persist($entity); 
      $em->flush(); 

      return $this->redirectToRoute('show_myentity'); 
     } 
     return $this->render('DeliveryAdminBundle:Entity:new.html.twig', 
       array('form'=>$form->createView())); 

私はエラーを取得する: "文字列"、 "Delivery \ AdminBundle \ Forms \ KitchenType"のタイプの予想される引数

私のHTMLコードでselectboxに荷物を載せたいと思います。

答えて

0

1.パスオプションフォームに(私の悪い英語用申し訳ありませんが)

あなたのフォームタイプクラス:

use S‌​ymfony\Component\Opt‌​ionsResolver\Options‌​Resolver; 

class MyEntityType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $em = $options['entity_manager']; 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setRequired('entity_manager'); 
    } 
} 

お使いのコントローラのアクション:

public function yourAction() 
{ 
    $entity = ...; 
    $form = $this->createForm(MyEntityType::class, $entity, [ 
     'entity_manager' => $this->get('doctrine.orm.entity_manager') 
    ]); 

    .... 
} 

2.サービスとしてのフォームを定義します あなたのフォームタイプクラス:

YAML

services: 

    .... 

    app.form.type.task: 
     class: Namespace\Of\MyEntityType 
     arguments: ['@doctrine.orm.entity_manager'] 
     tags: 
      - { name: form.type } 

XML

<?xml version="1.0" encoding="UTF-8" ?> 
<container xmlns="http://symfony.com/schema/dic/services" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> 
    <services> 
     <service id="your.service.name" class="Namespace\Of\MyEntityType"> 
      <argument type="service" id="doctrine.orm.entity_manager"/> 
      <tag name="form.type" /> 
     </service> 
    </services> 
</container> 
:サービスとして

use Doctrine\ORM\EntityManager; 

class MyEntityType extends AbstractType 
{ 
    protected $em; 

    public function __construct(EntityManager $em) 
    { 
     $this->em = $em; 
    } 

    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $em = $this->em; 
    } 
} 

登録

出典:How to Access Services or Config from Inside a Form

関連する問題