如何将 mimeType Assert 与 VichUploader 一起使用?

2024-01-07

当使用以下命令上传任何文件时,此断言会通过 Symfony 的表单验证VichUploaderBundle http://github.com/dustin10/VichUploaderBundle:

/**
 * @Vich\UploadableField(mapping="product_media", fileNameProperty="path")
 * @Assert\File(
 *     mimeTypes = {"image/jpeg", "image/gif", "image/png", "video/mp4", "video/quicktime", "video/avi"},
 *     mimeTypesMessage = "Wrong file type (jpg,gif,png,mp4,mov,avi)"
 * )
 * @var File $pathFile
 */
protected $pathFile;

我看不出断言有什么问题。如何使用 VichUploader 验证文件类型?


对于 Symfony 4.0,您需要导入 Validator 组件

composer require validator

现在,在您的实体类中,您可以使用 @Assert 注释。

// src/Entity/Author.php

// ...
use Symfony\Component\Validator\Constraints as Assert;

class Author
{
    /**
     * @Assert\NotBlank()
     */
    public $name;
}

您可能需要在 config/packages/framework.yaml 文件中添加一些配置。不管怎样,这一切在 Symfony 官方文档中都有完美的解释。

http://symfony.com/doc/current/validation.html http://symfony.com/doc/current/validation.html

要检查 mime 类型,您需要使用文件约束http://symfony.com/doc/current/reference/constraints/File.html http://symfony.com/doc/current/reference/constraints/File.html

这是一个工作示例

/**
 * @ORM\Column(type="string", length=255)
 * @var string
 */
private $cvFilename;

/**
 * @Assert\File(
 *     maxSize = "2048k",
 *     mimeTypes = {"application/pdf", "application/x-pdf"},
 *     mimeTypesMessage = "Please upload a valid PDF"
 * )
 * @Vich\UploadableField(mapping="cv", fileNameProperty="cvFilename")
 * @var File
 */
private $cvFile;

现在 @Vich\UploadableField 注释中确实有一个 mime 和 size 选项,如此处所述https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/usage.md#step-2-link-the-upload-mapping-to-an-entity https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/usage.md#step-2-link-the-upload-mapping-to-an-entity但我无法让它发挥作用。

@Assert 注释将生成 Forms 错误,您可以在 Twig 中检索它们以提供反馈。

关键是使用:form_errors(candidature_form.cvFile)

这是一个工作示例:

 {% set error_flag = form_errors(candidature_form.cvFile) %}

        <label class=" {% if error_flag %}has-error{% endif %}">
            Curriculum Vitae (PDF)
        </label>
        {{ form_widget(candidature_form.cvFile) }}
        {% if error_flag %}
            <div class="has-error">
                {{ form_errors(candidature_form.cvFile) }}
            </div>
        {% endif %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 mimeType Assert 与 VichUploader 一起使用? 的相关文章

  • symfony 2.0足够稳定可以使用吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我怀疑是否交响乐2 0够稳定可以使用吗 因为我从来没有用过Symfony before 看起来交响乐2比以前的版本好得多 我不想在几个月后重新学
  • 无法使用symfony2连接数据库oracle

    我需要的 我需要将oracle数据库与symfony2连接 我已经通过 php m 检查过 oci8 pdo odbc odbc 这是我关注的链接https gist github com johnkary 6481664 https gi
  • 在 Symfony 2 和耦合中集成捆绑包(相关 Dotrine 2 实体)

    据我了解 捆绑是分离功能 假设我有一个UserBundle ABlogBundle 然后我的BlogBundle Post将有一个author引用的字段UserBundle User 这不是违背了 Bundle 的目的吗 我无法交换另一个U
  • assert groupType != null 如何包含4个分支

    我需要测试以下代码 public List
  • Symfony2 - Doctrine - 更新后没有更改集

    因此 当实体的某个值发生更改时 我会发送电子邮件 我只想在更新后发送电子邮件 以防更新因任何原因失败 所以在更新前我可以这样做 public function preUpdate LifecycleEventArgs args if arg
  • 在 laravel 中创建项目时,output.php 中 Symfony 解析错误

    安装了 Laravel 5 6 还安装了 PHP 7 0 当我尝试时 laravel new sample project 它创建了所需的文件和依赖项 但出现以下错误 PHP Parse error syntax error unexpec
  • Symfony2.1表单日期字段:传递给...的参数1必须是DateTime的实例

    我的实体 var DateTime publishedAt ORM Column name published at type date Assert Date private publishedAt Set publishedAt par
  • Symfony 2 中的连接表

    我刚刚开始在 Symfony 2 中进行面向对象编程 并且在连接 mysql 表时遇到问题 我有两张桌子 kommuner id 名称 容量 活动 id 姓名 kommune id 如何在实体文件中加入这些表 这是我在 DefaultCon
  • 如何自定义 FOS UserBundle URL

    我已经安装了FOS用户包 https github com FriendsOfSymfony FOSUserBundle我想将网址自定义为 account login account register account logout代替 lo
  • twig json_encode 空 json

    我正在从 API 接收元素列表 所有元素的格式都很好 当我使用树枝转储其中一个时 我得到以下信息 Leg 2695 id null reservation null airportStart AIX LES MILLES airplaneT
  • 单元测试中的多个断言[重复]

    这个问题在这里已经有答案了 我刚刚读完 Roy Osherove 的 单元测试的艺术 我正在努力遵循他在书中提出的最佳实践 最佳实践之一是不要在测试方法中使用多个断言 这条规则的原因对我来说相当清楚 但它让我想知道 如果我有这样的方法 pu
  • Symfony Finder 忽略以点开头的文件

    我使用 Finder 发送假脱机电子邮件 但自动名称生成器会在文件名中添加点 有时它们会出现在文件的开头 似乎查找器无法获取具有该名称的文件 那么这些文件是隐藏的 有人经历过这种行为吗 有什么建议如何使用查找器来查找隐藏文件吗 Thx 刚刚
  • 如何使用symfony2中的findOneBy方法返回数组而不是对象?

    我有一种情况 我想使用 symfony2 中的 findOneBy id 方法查询数据库 namePosting this gt getDoctrine gt getRepository MyBundle Users gt findOneB
  • Api平台所需的过滤器

    我正在使用 API 平台 并且我已经定义了一个自定义过滤器 如下所示https api platform com docs core filters creating custom filters https api platform co
  • aws eb deploy 不加载环境变量

    我正在通过 eb deploy 将 symfony 项目部署到 ec2 实例 aws linux 2 部署后迁移脚本运行良好 但当我尝试使用 ec2 user 运行 symfony 命令时 出现有关数据库凭据错误的错误 这是因为我推送了带有
  • 使用自定义服务的编译器传递加载 Symfony 的参数

    根据这个问题如何从数据库加载 Symfony 的配置参数 Doctrine https stackoverflow com q 28713495 8945214我有一个类似的问题 我需要动态设置参数 并且我想提供来自另一个自定义服务的数据
  • Symfony2 Twig 扩展

    我在实现树枝扩展时遇到一些问题 我需要创建自己的过滤器 子过滤器 所以我想到了使用twig扩展 我在 MyApp Bundle WebsiteBundle 和文件上创建了一个名为 Extension 的文件夹 网站扩展 php namesp
  • 使用 Symfony 4 命令加载不同的 .env 文件

    env运行 Symfony 4 命令时会解析文件 如果 dotenv 可用 这在开发时工作正常 而且 我想测试我的代码 所以另一个环境 因此我需要加载另一个 env file 我喜欢 Docker 运行容器的方式 docker run e
  • 如何在 Symfony2 中检查表单构建器中的用户角色?

    好的 我正在尝试检查用户是否具有特定角色 我做到了this https stackoverflow com questions 11998761 how can i access the user role in form builder
  • 如何在 Symfony2 WebTestCase 中重定向后获取当前 URL?

    使用 Symfony2 WebTestCase 我进行了以下测试 client gt request GET this gt assertTrue client gt getResponse instanceof RedirectRespo

随机推荐