簡體   English   中英

如何在Symfony 2中向提交的表單添加額外的數據?

[英]How do I add extra data to a submitted form in Symfony 2?

我有一個簡單的表格,只上傳圖片。 但是,在我的數據庫中,我想從該圖像中提取並記錄一些EXIF數據。

我不確定在Symfony2中使用什么。 在實體中計算此額外信息似乎不合適。 我還能放在哪里?

<?php

namespace Timeline\DefaultBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\HttpFoundation\File\UploadedFile;

/**
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks
 */
class Document
{
    //...

    /**
     * @ORM\PrePersist()
     * @ORM\PreUpdate()
     */
    public function preUpload()
    {
        // extract EXIF here?
    }

}

只要您不需要修改另一個實體,學說事件就可以很好地工作。

我認為處理您的案件的最佳方法是使用表單事件。 http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html#cookbook-form-events-user-data

例如,您可以使用POST_SUBMIT事件,並動態添加“ exif”文本字段,並在您的實體上添加映射數據庫字段的$ exif屬性。

class Document
{

    /**
     * @ORM\Column(type="text")
     */
    private $exif;
}

class DocumentType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('file', 'file')
        ;

        $builder->addEventListener(
            FormEvents::PRE_SUBMIT,
            function (FormEvent $event) {
                $form = $event->getForm();

                $data = $event->getData();
                $data['exif'] = 'data';
                $event->setData($data);

                $form->remove('exif');
                $form->add('exif', 'string');
            }
        );
    }
}

編輯#1:經過進一步研究,我發現的唯一方法是在數據數組中定義“ exif”鍵,並在表單中定義“ exif”字段,以便能夠將其映射到您的實體。 提交后,我沒有找到解決表格中剩余的“ exif”字段問題的方法。 如果將其定義為隱藏,或者不使用{{form_rest()}},它將不會出現,但這並不是那么干凈。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM