1. Go to this page and download the library: Download pentatrion/upload-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
pentatrion / upload-bundle example snippets
use App\Entity\Post;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\FormBuilderInterface;
class PostType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
// ...
->add('image', FileType::class, [
'mapped' => false,
'
class PostController extends AbstractController
{
/**
* @Route("/{id}/edit", name="post_edit", methods={"GET","POST"})
*/
public function edit(Request $request, Post $post, FileHelper $fileHelper): Response
{
$form = $this->createForm(PostType::class, $post);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$image = $form['image']->getData();
if ($image) {
/** @var UploadedFile $uploadedFile */
$uploadedFile = $fileHelper->uploadFile($image, 'posts');
// posts/my-image.jpg
$post->setImagePath($fileInfos->getUploadRelativePath());
}
$this->getDoctrine()->getManager()->flush();
// ...
}
// ...
}
}
$file // file from $_FILES
$directory = 'relative/path'; // path to add into public_uploads.
// configured in config/packages/pentatrion_upload.yaml
// pentatrion_upload.origins.<origin>
// default value public_uplads -> "%kernel.project_dir%/public/uploads"
$originName = 'public_uploads';
$options = [
'forceFilename' => 'beach.jpg',
'prefix' => null, // prefix your file name 'img-'
'guessExtension' => false, // guess Extension from content
//(if you don't trust the uploader)
'urlize' => true, // my File Name.jPg -> my-file-name.jpg
'unique' => true, // suffixe your file with hash
// beach-[hash].jpg
];
$fileInfos = $fileHelper->uploadFile($file, $directory, $originName, $options);
print_r($fileInfos);
class PageController extends AbstractController
{
#[Route('/page/{slug}', name: 'page_show')]
public function show(Page $page): Response
{
return $this->render('page/show.html.twig', [
'page' => $page
]);
}