Как настроить ярлыки 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