Как настроить ярлыки yaml с файлами UploadedFile (например, изображения)?

Я хочу настроить светильники для моего проекта symfony2. Я хочу избежать классов PHP, но использовать файлы yaml для определения светильников. Объекты, которые хранят только текстовые поля и отношения, работают нормально, но я не знаю, можно ли добавить UploadedFile, например. файлы изображений, таким образом.

В настоящий момент я использую KhepinYamlFixtureBundle и не уверен, можно ли определить их через служебный вызов или если он У этой функции вообще нет.

Я бы переключился на пакет, предоставляющий эту функцию.

Ответы

Ответ 1

вы должны использовать Alice.

Alice - это генератор арматуры PHP, который позволяет легко загружать инструменты из файлов PHP или Yaml. Вот фрагмент кода, который загружает некоторые данные из класса Doctrine Fixtures:

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);
    }
}

И в ваших данных для загрузки в файл YML:

# users.yml
MyProject\User:
    user_1:
        firstName: "Albert "
        lastName:  "Einstein"
        username:  "albert-e"
        email:     "[email protected]"

Подробнее здесь.

Ответ 2

i создал класс FileUpload для PHP 5.3 +

Как использовать?:

Documentation

из RFC 3023 (типы XML-носителей):

Тип медиатекста верхнего уровня "текст" имеет некоторые ограничения на объекты MIME и они описаны в [RFC2045] и [RFC2046]. В частности, UTF-16, UCS-4 и UTF-32 не допускаются (кроме HTTP [RFC2616], который использует MIME-подобный механизм).

Разрешить загрузку только файла yaml:

<?php
$file = new FileUpload\FileUpload();
$file->setInput( "file" );
$FileUpload->setAllowedMimeTypes(array(
    "text/x-yaml",        // RFC 3023
    "application/x-yaml", // Ruby on Rails
    "text/plain",         // Possible option( only text plain )
    "text/yaml",          // Possible option
    "text/x-yaml",        // Possible option
    "application/yaml",   // Possible option
));
$file->setDestinationDirectory("/var/www/html/myapp/");
$file->save();
if ($file->getStatus()) {
    $loader = new \Nelmio\Alice\Loader\Yaml();
    $objects = $loader->load( $file->getInfo()->destination );
    // The rest of your code ...
}
?>

Пример со всеми типами mime:

<?php
$file = new FileUpload\FileUpload();
$file->setInput( "file" );
$file->save();
if ($file->getStatus()) {
    echo "is Upload!";
}
?>
<html>
    <head>
        <title>FileUpload Example</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
        <form method="post" action="" enctype="multipart/form-data">
            <input type="file" name="file" />
            <input type="submit" value="Upload now!" />
        </form>
    </body>
</html>

Удачи!

GitHub: https://github.com/olaferlandsen/FileUpload-for-PHP