gpt4 book ai didi

symfony - 如何从实体内部获取Web目录路径?

转载 作者:行者123 更新时间:2023-12-03 04:53:08 25 4
gpt4 key购买 nike

我研究了How to Handle File Uploads with Doctrine我不想对 __DIR__.'/../../../../web/'.$this->getUploadDir(); 路径进行硬编码,因为可能在将来我将更改 web/ 目录。怎样做才更灵活呢?我发现this但它没有回答如何从实体内部更灵活地做到这一点的问题

最佳答案

此处不应使用实体类作为表单模型。它根本不适合那份工作。如果实体具有 path 属性,则它可以存储的唯一有效值是:null(如果缺少文件)和表示文件路径的字符串。

  1. 创建一个单独的类,它将成为您的表单的模型:

    class MyFormModel {
    /** @Assert\File */
    private $file;

    /** @Assert\Valid */
    private $entity;

    // constructor, getters, setters, other methods
    }
  2. 在表单处理程序(通过 DIC 配置的单独对象;推荐)或 Controller 中:

    ...
    if ($form->isValid()) {
    /** @var \Symfony\Component\HttpFoundation\File\UploadedFile */
    $file = $form->getData()->getFile();

    /** @var \Your\Entity\Class */
    $entity = $form->getData()->getEntity();

    // move the file
    // $path = '/path/to/the/moved/file';

    $entity->setPath($path);

    $someEntityManager->persist($entity);

    return ...;
    }
    ...

在表单处理程序/ Controller 内,您可以从 DIC 访问任何依赖项/属性(包括上传目录的路径)。

<小时/>

您链接的教程有效,但它是一个糟糕设计的例子。实体不应该知道文件上传。

关于symfony - 如何从实体内部获取Web目录路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12893657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com