为可上载的Doctrine Extension创建表单

时间:2016-06-01 13:06:16

标签: php symfony doctrine-orm doctrine-uploadable

我想使用Uploadable来保存一些图像(即用户的个人资料图片)。我已经使用了许多其他的Doctrine Extensions(softdeletable,timestampable,blameable等),所以我觉得使用这个也很好。

但是,我不知道如何设置我的表单。 StofDoctrineExtensionsBundle documentation给出了这个例子:

$document = new Document();
$form = $this->createFormBuilder($document)
    ->add('name')
    ->add('myFile')
    ->getForm()
;

//(...)

$uploadableManager->markEntityToUpload($document, $document->getMyFile());

在此示例中,name是文档的名称还是文件的名称?

Atlantic18 / DoctrineExtensions documentation向实体添加了pathnamemimeTypesize,没有{{} 1}}属性。

有人可以解释如何为可上传的Doctrine实体设置表单吗?我找不到任何可以帮助我的文件或好的例子。

1 个答案:

答案 0 :(得分:1)

实体

就像你发现的那样,documentation of DoctrineExtensions本身揭示了如何配置可上传扩展以使用你的实体。

主要是将@Gedmo\Uploadable注释添加到您的实体,将@Gedmo\UploadableFilePath添加到包含文件路径的属性(例如$filePath)。

表格

使用表单构建器的->add()方法,您可以向表单添加字段。第一个参数指定相应实体的property-name。因此,->add('myFile')会为属性$myFile添加字段。

您需要做的是将(文件)字段添加到包含文件路径(例如$filePath)的属性的表单中,并标记该属性:

$form = $this->createFormBuilder($entity)
    ->add('filePath');

$uploadableManager->markEntityToUpload($entity, $entity->getFilePath());

换句话说:在我的示例中,您的示例中的myFile应替换为filePath,并且无论实际代码中的实际属性是什么。