2016-11-07 8 views
0

FileTypeフィールドにいくつかのフィールドを追加しました。たとえば、許可されているファイルサイズに関する情報や適切な場合はプレビューイメージを表示します。Symfonyフォームタイプ内にマッピングされていないフィールドを追加する

ここで達成したいのは、必須ではないファイルフィールドには、ユーザーが既存のファイルを削除できるようにするための追加の(マップされていない)チェックボックスが表示されているということです。

まず、form typ extensionを試しました。今私は専用のフォーム型クラスを使用します。しかし、私はまだそれに対処できませんでした。そこにある瞬間

{% block my_field_upload_widget %} 
    {% spaceless %} 

    {# the file input field #} 
    {{ block('file_widget') }} 

    {% if file_path|default and not required %} 
     {# the additional checkbox #} 
     {{ form_row(attribute(form, id ~ 'DeleteFile')) }} 
    {% endif %} 

    {% endspaceless %} 
{% endblock %} 

  1. をカスタムファイルタイプ:

    public function buildForm(FormBuilderInterface $builder, array $options) 
        { 
         $fieldName = $builder->getForm()->getConfig()->getName(); 
    
         $builder->add($fieldName, 'Symfony\Component\Form\Extension\Core\Type\FileType', $options); 
    
         if ($options['required']) { 
          return; 
         } 
    
         $builder->add($fieldName . 'DeleteFile', 'Symfony\Component\Form\Extension\Core\Type\CheckboxType', [ 
          'mapped' => false, 
          'label' => 'Delete existing file', 
          'required' => false, 
          'attr' => [ 
           'title' => 'Delete this file ?' 
          ] 
         ]); 
        } 
    
  2. テンプレートここ

    は、私が現在やっているですすべての入力フィールドは表示されません(neiファイルフィールドもチェックボックスも表示されません)。

    私が間違ってやっていることに対するよりよいアプローチや指針についての考え方はありますか?

答えて

0

私は

<input type="file" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value }}" {% endif %}/> 
によって

{{ block('file_widget') }} 

を交換することによって、これを解決することができ

関連する問題