gpt4 book ai didi

php - 如何使用 UploadedFile(例如图像)文件设置 yaml fixtures?

转载 作者:IT王子 更新时间:2023-10-29 00:06:17 25 4
gpt4 key购买 nike

我想为我的 symfony2 项目设置固定装置。我想避免 PHP classes但使用 yaml 文件来定义固定装置。仅存储文本字段和关系的实体工作正常,但我不知道是否可以添加 UploadedFile,例如图像文件,这样。

目前,我正在使用 KhepinYamlFixtureBundle并且我不确定是否可以通过服务调用来定义它们,或者它是否根本没有此功能。

我会切换到提供该功能的 bundle 。

最佳答案

你应该使用 Alice .

Alice 是一个 PHP fixtures 生成器,可让您轻松地从 PHP 或 Yaml 文件加载 fixtures管理上传的文件。这是从 Doctrine Fixtures 类加载一些数据装置的代码片段:

<?php

namespace MyProject\User\Fixtures;

use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use Nelmio\Alice\Loader\Yaml;
use Nelmio\Alice\ORM\Doctrine;
use Symfony\Component\Finder\Finder;

class LoadUserData implements FixtureInterface
{
public function load(ObjectManager $manager)
{
// load objects from a yaml file
$loader = new \Nelmio\Alice\Loader\Yaml();
$objects = $loader->load(__DIR__.'/users.yml');

$persister = new \Nelmio\Alice\ORM\Doctrine($manager);
$persister->persist($objects);

// Copy images into the legacy application
$fs = $this->container->get('filesystem');
$legacyPath = $this->container->getParameter('legacy_path').'/web/uploads';
$basePath = __DIR__.'/../files';

$finder = \Symfony\Component\Finder\Finder::create()
->files()
->in($basePath)
->ignoreDotFiles(true)
->ignoreVCS(true)
;

foreach ($finder as $file) {
if ($file->isFile()) {
$newFile = str_replace($basePath, $legacyPath, $file->getPathname());
$fs->copy($file->getPathname(), $newFile);
}
}
}
}

并在您的数据中加载一个 YML 文件:

# users.yml
MyProject\User:
user_1:
firstName: "Albert"
lastName: "Einstein"
username: "albert"
email: "albert.einstein@protonmail.com"

更多信息 here .

关于php - 如何使用 UploadedFile(例如图像)文件设置 yaml fixtures?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21731015/

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