2017-12-03 38 views
0

私はsymfonyでウェブサイトを構築しています。私は、ネストされたオブジェクトを持つフォームを表示するページを取得しようとしています。 Artikelには1つのカテゴリしかありません。多くのartikelsと多くのカテゴリがあります。ドロップダウンで記事のカテゴリが表示されない

/** 
* Artikel 
* 
* @ORM\Table(name="artikel", indexes= 
    {@ORM\Index(name="IDX_A4375C338C9B60D8", columns={"idartikeltype"})}) 
* @ORM\Entity 
*/ 
class Artikel 
{ 
.... 
/** 
* @ORM\Column(type="integer") 
* 
*/ 
private $idartikeltype; 

/** 
* @var ArtikelCategory 
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\ArtikelCategory" 
    ,inversedBy="type") 
* @ORM\JoinColumn(name="idartikeltype", 
    referencedColumnName="idartikeltype") 
*/ 
private $category; 

/** 
* @var integer 
* 
* @ORM\Column(name="idArtikel", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="IDENTITY") 
*/ 
private $idartikel; 

...... 

私のクラスArtikelCategory

class ArtikelCategory 
{ 
/** 
* @var string 
* /** 
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Artikel", 
mappedBy="category",cascade={ALL}) 
* 
* @ORM\Column(name="type", type="string", length=45, nullable=false) 
*/ 
private $type; 

/** 
* @var integer 
* 
* @ORM\Column(name="idartikeltype", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="IDENTITY") 
*/ 
private $idartikeltype; 

/** 
* @return string 
*/ 
public function getType() 
{ 
    return $this->type; 
} 

/** 
* @param string $type 
*/ 
public function setType($type) 
{ 
    $this->type = $type; 
} 

/** 
* @return int 
*/ 
public function getIdartikeltype() 
{ 
    return $this->idartikeltype; 
} 

/** 
* @param int $idartikeltype 
*/ 
public function setIdartikeltype($idartikeltype) 
{ 
    $this->idartikeltype = $idartikeltype; 
} 

public function __toString() { 

    return $this->getType() 
     ; 


} 


public function __construct(){ 
    $this->type = new ArrayCollection(); 
} 
} 

ArtikelType

public function buildForm 
(FormBuilderInterface $builder , array 
    $options 
     ) 
     { 
      $builder 
     ->add ('titel', TextType::class,array('label'=>'Titel')) 

     ->add('datum',DateType::class,array('label'=>'Date')) 

     ->add('category' , 

    EntityType::class,array 
('class'=>\AppBundle\Entity\ArtikelCategory::class,'label'=>'Page', 
      'query_builder'=>function(EntityRepository $er){ return $er- 
>createQueryBuilder('t')->orderBy('t.type','ASC');} 


     )) 

     ->add('tekst',CKEditorType::class,array('label'=>'Text')) 

     ->add('save',SubmitType::class,array('label'=>'Save item')) 
     ; 



} 

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array('data_class'=>'AppBundle\Entity\Artikel',)); 
} 

InputController

$item = $this-> getDoctrine()->getRepository(Artikel::class)->find($id); 


    $form = $this->createForm(ArtikelType::class, $item); 

    $form->handleRequest($request); 

    if($form->isSubmitted() && $form -> isValid()) 
    { 


     $em= $this->getDoctrine()->getManager(); 

     $em->persist($item); 
     $em->flush(); 
     return $this->redirectToRoute('input'); 

    } 

    return $this->render('input/input.html.twig', array('form'=>$form->createView(),)); 

通常ドロップダウンがのカテゴリを表示する必要があります私のフォームでは、ドロップダウンリストにアーティキルのカテゴリが表示されず、アーティキルを永続させると新しいカテゴリは保存されません。

Icant figure this one out!助けて。

答えて

0

注釈が正しくありません。 ArtikelCategory :: typeの@ORM \ Columnアノテーションを削除します。次に、エンティティのテキスト形式のプレゼンテーションを返す__toString()メソッドを追加します。 formTypeで最初にすべてのオプションを削除します。ちょうど-->add('category')を使用してください。DoctrineマニュアルのAssociation Mappingの章の例を正確に示してください。@\ ORMという接頭辞をアノテーションに追加してください。変更後

bin/console doctrine:schema:update --force 

でデータベースにそれらを更新し、マッピングは、私がAssociation Mapping読んだとき、それは私が考えるようになった

bin/console doctrine:schema:validate 
0

メアCulpa、と正しいかどうかを確認します。今私は多対1の一方向の関連を使っていることを知っています。 残りはケーキでした....

Thx。

関連する問題