2016-09-16 69 views
4

我正在努力在我的網站上上傳.pdf文件。Symfony2在窗體中輸入文件類型始終返回null

我創建了一個實體,其中包含字符串中文件的名稱。 有實體映射:

<field name="pdf" type="string" column="pdf" length="200" nullable="true"/> 

的形式,我輸入文件:

$builder 
     ->add('pdf', FileType::class, array('label' => 'Fiche de paie')) 
     /* other input */ 
    ; 

我表單的觀點:

{{ form_start(form) }} 
    {{ form_row(form._token) }} 
    <div class="modal-body row"> 
     <div class="col-md-6 col-sm-8"> 
      /* other input */ 
      {{ form_row(form.pdf) }}} 
     </div> 
     <div class="col-md-6 col-sm-8"> 
      /* other input */ 
     </div> 
    </div> 

    <div class="modal-footer"> 
     <button type="button" class="btn btn-info" id="save">{% trans %}Save{% endtrans %}</button> 
    </div> 
    {{ form_end(form, { 'render_rest': false }) }} 

而且存在控制器:

if ($form->isSubmitted() && $form->isValid()) { 
     $pdf = $salaire->getPdf(); 

     if ($pdf == null) { /* Always true */ 
      $salaire->setPdf('test'); 
     } 

     /* operations to extract the file name and set it to the pdf variable in salaire */ 

     $em->persist($salaire); 
     $em->flush(); 

     return $this->redirectToRoute('salaires_index', array("id" => $remuneration->getId())); 
    } 

T他的問題是,即使我輸入一個文件,當我與

->salaire->getPdf() 

獲得輸入值的結果總是空。

首先,我認爲這是因爲我在實體中的字符串上設置了表單輸入FileType,但我試圖將它設置在實體中的UploadedFile變量上,結果仍爲空。

感謝您的幫助。

回答

0

一定要設置表單元素的正確的enctype(在表單中標記值enctype="multipart/form-data")。

談到documentation你可以這樣做:

{{ form_start(form, {'multipart': true}) }} 

希望這有助於

+0

感謝您的幫助,但那並沒有成功。 – Julien

0

我有類似的問題。上傳的文件始終爲空值。我發現控制器的表單處理不正確。

我原本是這樣的:直到我說的文件類型元素

if ($request->isMethod('POST')) { 
    $form->submit($request->request->get($form->getName())); 
    if ($form->isSubmitted() && $form->isValid()) { 
    // handle form data 
    } 
} 

所有其他領域提供了他們的價值,因此一直在努力。這已修復問題:

$form->handleRequest($request); // This bit was important 
if ($form->isSubmitted() && $form->isValid()) { 
// handle form data 
}