2016-09-16 2 views
4

Я работаю над тем, чтобы загрузить файл .pdf на моем сайте.Symfony2 FileType вход в форму всегда возвращает 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

У меня был аналогичная проблема. Загруженный файл всегда имел значение null. Я обнаружил, что обработка формы контроллера была неправильной.

Изначально у меня было что-то вроде этого:

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

Все остальные поля при условии их стоимости, так она работает, пока я не добавил элемент FileType. У этого есть проблема:

$form->handleRequest($request); // This bit was important 
if ($form->isSubmitted() && $form->isValid()) { 
// handle form data 
} 
Смежные вопросы