2017-02-17 4 views
1

皆さん、私はSymfonyの新しいプロジェクトで作業しています。入力ファイルがあるときに編集ビューでいくつかの問題があります。製品、製品の価格が、空の写真の入力ファイルと入力価格の名で水和入力:SSYMFONYインスタンスを更新するための水和物のファイルタイプ

私は修正

マイFormBuilder

の存続の前に、この入力ファイルをhydaratするために行うことができますどのように

class ProductEditType extends AbstractType 
 
{ 
 
    /** 
 
    * {@inheritdoc} 
 
    */ 
 
    public function buildForm(FormBuilderInterface $builder, array $options) 
 
    { 
 
     $builder 
 
     ->add('name',TextType::class) 
 
     ->add('price',TextType::class) 
 
     ->add('Photo',PhotoType::class) 
 
     ->add('enregistrer',SubmitType::class); 
 
    }

public function editProductAction($id, Request $request){ 
 
     $product = new Product(); 
 
     $repository=$this->getDoctrine()->getManager()->getRepository('MyProjectProductBundle:Product'); 
 
     $product= $repository->find($id); 
 
     $form=$this->get('form.factory')->create(ProductEditType::class,$product); 
 
     if($request->isMethod('post') && $form->handleRequest($request)->isValid()){ 
 

 
      $em=$this->getDoctrine()->getManager(); 
 
      $em->persist($product); 
 
      $em->flush(); 
 
      return $this->redirectToRoute('my_project_backoffice_product', array('id'=>$product->getId())); 
 
     } 
 

 
     return $this->render('MyProjectBackofficeBundle:Backoffice:editproduct.html.twig',array('form'=>$form->createView(),'product'=>$product)); 
 

 
    }

フォトタイプ

class PhotoType extends AbstractType 
 
{ 
 
    /** 
 
    * {@inheritdoc} 
 
    */ 
 
    public function buildForm(FormBuilderInterface $builder, array $options) 
 
    { 
 
     $builder->add('file', FileType::class)  ; 
 
    } 
 
    
 
    /** 
 
    * {@inheritdoc} 
 
    */ 
 
    public function configureOptions(OptionsResolver $resolver) 
 
    { 
 
     $resolver->setDefaults(array(
 
      'data_class' => 'MyProject\ProductBundle\Entity\Photo' 
 
     )); 
 
    } 
 

 
    /** 
 
    * {@inheritdoc} 
 
    */ 
 
    public function getBlockPrefix() 
 
    { 
 
     return 'myproject_productbundle_photo'; 
 
    }

小枝が争うコントローラ

<div class="well"> 
 

 
    {{ form_start(form) }} 
 
    
 

 
<div class="container4_in"> 
 
\t <div class="gri4"> 
 
\t \t <div class="grid2"> 
 
\t \t <div class="form_elem_wrraper"> 
 

 
    <div class="row_form"> 
 
    {{ form_label(form.name, "Name ") }} 
 
    {# Génération de l'input. #} 
 
    {{ form_widget(form.name,{ 'attr': {'class' :'input', 'placeholder': "Entrez le nom de l'auteur"}}) }} 
 
    </div> 
 

 
    
 
</div></div> 
 

 

 

 
<div class="grid2"> 
 
\t \t <div class="form_elem_wrraper"> 
 

 
    <div class="row_form"> 
 
    {{ form_label(form.price, "Price ") }} 
 
    {# Génération de l'input. #} 
 
    {{ form_widget(form.price,{ 'attr': {'class' :'input', 'placeholder': "Entrez le nom de l'auteur"}}) }} 
 
    </div> 
 

 
    <div class="row_form"> 
 
    {{ form_label(form.Photo, "Photo") }} 
 
    {# Génération de l'input. #} 
 
    {{ form_widget(form.Photo) }} 
 
    </div> 
 

 
    
 

 
</div> 
 
</div> 
 

 

 
</div> 
 
</div> 
 

 
    {# Pour le bouton, pas de label ni d'erreur, on affiche juste le widget #} 
 
    {{ form_widget(form.enregistrer,{'attr': {'class': 'btn_bleu btn_submit_form'}}) }} 
 

 
    {# Fermeture de la balise <form> du formulaire HTML #} 
 
    {{ form_end(form) }} 
 

 
\t \t \t \t \t \t \t \t 
 
\t \t \t \t \t \t \t </form>

wが、私は

答えて

0

symfonyのファイル形式の種類は、バックエンドからのデータでは反映されませんありがとう、あなたの助けを必要としています。既存のファイルを表示する場合は、Twigファイルに手動で追加する必要があります。

エンティティコードを添付していないので、私の例はMyProject\ProductBundle\Entity\Photoクラスの適切なメソッドで使用する必要があることに注意してください。

私の例では、ビューフォトエンティティにphotoとして渡す必要がありますが、前にアップロードされたファイルが既に存在していた場合に限ります。

<div class="row_form"> 
    {% if photo is defined %} 
     Current photo: <img src="{{ photo.getWebPath() }}" /> 
    {% endif %} 

    {{ form_label(form.Photo, "Photo") }} 
    {# Génération de l'input. #} 
    {{ form_widget(form.Photo) }} 
</div> 
+0

わかりにくいので、コメントを改善してください。 –

+0

申し訳ありませんが、データベースに既に保存されている製品の情報を更新するためのフォームがあり、ツリービューでは製品の名前で完成した入力名と製品の写真で完成した入力ファイルが必要です。あなたの例で私は本当にこの解決策が私の問題を解決するつもりならば、私はいつも入力ファイルが空になると思うか分からない –

+0

はい、ファイル入力は常に空です。この入力を満たす理由は何ですか?あなたはそれを必要とすべきではありません。 –

関連する問題