2017-04-11 3 views
0

Ich glaube, dass ich viele Tutorials ausprobiert habe und jetzt habe ich keine Ideen mehr. Ich möchte Datei-Entität erstellen, die Details jeder Datei enthält, die in das System hochgeladen wird, und es wird die OneToOne-Beziehung zu anderen Entitäten verwenden. Ich habe diesen Ansatz auf Symfony 2.4 verwendet und es war in Ordnung, aber mit Symfony 3 bekomme ich unerwartete Fehler. Ich verwende Sonata Admin für das Backend-Datenmanagement. anstelle des File-Objekt auf Datei Setter setFileSymfony 3 und Sonata Admin Datei hochladen

So habe ich Beitrag Einheit

class Post extends BasePageModel 
{ 
    ... 
    /** 
    * @ORM\OneToOne(targetEntity="File", cascade={"persist"}) 
    * @ORM\JoinColumn(name="file_id", onDelete="CASCADE", referencedColumnName="id") 
    */ 
    protected $file; 

    ... 

    /** 
    * Set file 
    * 
    * @param File $file 
    * 
    * @return Post 
    */ 
    public function setFile(File $file = null) 
    { 
     $this->file = $file; 

     return $this; 
    } 

    /** 
    * Get file 
    * 
    * @return File 
    */ 
    public function getFile() 
    { 
     return $this->file; 
    } 

    ... 

} 

Eines der Probleme ist, dass ich Array bekommen und Ich erhalte eine Fehlermeldung: Expected value of type "File" for association field "Post#$file", got "array" instead.

+0

Können Sie für diese Entität eine Formularklasse bereitstellen? – xReprisal

Antwort

0

Nach Graben in I Form Typklasse habe bemerkt, dass ich nicht setDefaults mit data_class über die configureOptions tat

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => BaseFile::class 
    )); 
} 

Danach werden die Daten dieser Datei zugrunde liegenden hat sich zu einem File-Objekt und nicht zu einem Array entwickelt.

Verwandte Themen