2016-10-28 1 views
1

Ich erstelle ein benutzerdefiniertes Widget zum Hochladen von Dateien, in dem ich den zuletzt hochgeladenen Dateinamen anzeigen kann. Ich habe Formtype-Klasse und in form/fields.html.twig Ich habe folgende:Symfony 2.8 - Anzeige bestimmter Entity-Werte in der Formularfeld-Widget-Vorlage

{% block custom_document_widget %} 
    {% spaceless %} 
     {# here I want to include code to display filename #} 

     {# display file input #} 
     {% set type = 'file' %} 
     {{ block('form_widget_simple') }} 
    {% endspaceless %} 
{% endblock %} 

Ich weiß, dass der Wert eines aktuellen Feldes {{ form.vars.value }} analysiert werden kann, aber am Ende des Feld Eingabedatei und nicht über den Wert des Dateinamen Das wurde zuvor hochgeladen.

Um den hochgeladenen Dateinamen zu speichern, habe ich $filename Variable in Entität und möchte es in Feld Widget Vorlage anzeigen. Wie kann ich es angehen?

+0

Ich denke, ein [Datentransformator] (http://symfony.com/doc/current/form/data_transform ers.html) ist was du suchst. – nifr

Antwort

0

Am Ende hatte ich die Dateinamen als Option für eingebettete Form zu übergeben, die meinen FileType vertreten:

$builder 
    ->add('resumeFile', CustomDocsType::class, array(
     'required' => false, 
     'constraints' => array(
      new File(array(
       'mimeTypes' => array(
        'application/pdf', 
       ), 
       'mimeTypesMessage' => 'mimetype', 
      )), 
     ), 
     'filename' => $trainee->getResumeOriginal(), 
    )) 

In meinem CustomDocsType:

class CustomDocsType extends AbstractType 
{ 
    public function buildView(FormView $view, FormInterface $form, array $options) 
    { 
     parent::buildView($view, $form, $options); 

     $view->vars = array_merge($view->vars, array(
      'filename' => $options['filename'] 
     )); 
    } 

    public function configureOptions(OptionsResolver $resolver) 
    { 
     $resolver->setDefaults(array(
      'filename' => null 
     )); 
    } 

    public function getParent() 
    { 
     return FileType::class; 
    } 
} 

Und jetzt musste ich nur die acces Dateiname in Vorlage:

{{ form.vars.filename }}