我想为我的symfony2项目设置灯具.我想避免PHP类,但使用yaml文件来定义fixture.仅存储文本字段和关系的实体工作正常,但我不知道是否可以通过这种方式添加UploadedFile,例如图像文件.
目前,我正在使用KhepinYamlFixtureBundle,并且不确定是否可以通过服务调用定义它们,或者它是否完全没有此功能.
我会切换到提供该功能的捆绑包.
一个基本的 Symfony 3 应用程序安装并配置了VichUploader 包,并带有一个用于上传文件的实体。
如何在我的 ORM 数据装置中将文件附加到该实体?
在 Symfony 2 中有一个关于这个问题的问题,我已经尝试过该代码。夹具加载没有错误,但“上传”的文件不会复制到其最终目的地。
我可以手动执行此操作,我最近的尝试如下所示:
<?php
// src/AppBundle/DataFixtures/ORM/LoadCourseData.php
namespace AppBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
use Doctrine\Common\DataFixtures\AbstractFixture;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
use AppBundle\Entity\Course;
class LoadCourseData extends AbstractFixture implements OrderedFixtureInterface
{
public function load(ObjectManager $manager)
{
$course = new Course();
$course->setName('How to make data fixtures in Symfony lol')
->setAuthor($this->getReference('admin-user'))
->setSummary('You\'ll know when I know!')
->setLicense($this->getReference('cc-by'))
->setDifficulty(1);
// Persist to generate slug (to be used for uploads)
$manager->persist($course);
// Attach …Run Code Online (Sandbox Code Playgroud) 在 Symfony 4 项目中,是否有一种正确的/symfony 方法可以从 Fixture 类中获取根路径目录?
最终目标:
当我部署我的网站时,我使用fixtures 类在我的数据库中加载一些“默认”数据。(可能这不是一个好习惯)
在这些默认数据中,我需要存储项目的根路径目录,因为我需要来自项目中自定义 utils 和服务类的这些信息。
我知道有多种方法可以做到这一点。目前,我对绝对路径进行了硬编码(<= 有史以来最丑陋的方式;))