为可上传的 Doctrine 扩展创建表单

Create form for Uploadable Doctrine Extension

我想使用 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是Document的名称还是文件的名称?

Atlantic18/DoctrineExtensions的documentation给实体添加了pathnamemimeTypesize,没有myFile 属性。

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

实体

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

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

表格

使用表单生成器的 ->add() 方法,您可以将字段添加到表单中。第一个参数指定相应实体的 属性-名称。所以 ->add('myFile') 会为 属性 $myFile.

添加一个字段

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

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

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

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