[英]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.