Witam,
podczas tworzenia formularza do edycji już istniejącego elementu formularz napotkałem na problem, że formularz nadal oczekuje instancji pliku.
Formularz:
<?php
namespace App\Form;
use App\Entity\Post;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\DateType;
use Symfony\Component\Form\Extension\Core\Type\
FileType;use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class PostType extends AbstractType
{
public function buildForm
(FormBuilderInterface
$builder, array $options) {
$builder
->add('title', TextType::class, ['label' => 'Tytuł'])
->add('subtitle', TextType::class, ['label' => 'Podtytuł'])
->add('image', FileType::class, ['label' => 'Zdjęcie']) ->add('description', TextareaType::class, ['label' => 'Opis'])
->add('contents', TextareaType::class, ['label' => 'treć'])
->add('date', DateType::class, ['label' => 'Data'])
->add('author', TextType::class, ['label' => 'Autor'])
->add('submit', SubmitType::class, ['label' => 'Dodaj'])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(['data_class' => Post::class]);
}
}
Entity: (skrócone tylko do dotyczącego problemu)
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints
as Assert;use Gedmo\Mapping\Annotation as Gedmo;
/**
* @ORM\Entity(repositoryClass="App\Repository\PostRepository")
*/
class Post
{
/**
* @ORM\Column(type="string")
*
* @Assert\NotBlank(message="Please, upload the product brochure as a JPG file.")
* @Assert\File(mimeTypes={ "image/jpeg" })
*/
private $image;
public function getImage()
{
return $this->image;
}
public function setImage($image)
{
$this->image = $image;
return $this;
}
}
Controller: (skrócone tylko do dotyczącego problemu)
/**
* @Route("/edit/{slug}", name="edit_post")
* @param Request $request
* @param Post $post
* @return Response
*/
public function editAction(Request $request, Post $post)
{
$post->setImage(
new File($this->getParameter('images_directory').'/'.$post->getImage()) );
$editForm = $this->createForm(PostType::class, $post);
if ($request->isMethod('post')) {
$editForm->handleRequest($request);
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($post);
$entityManager->flush();
return $this->redirectToRoute('blog_single', ['slug' => $post->getSlug()]);
}
return $this->render('actionBlog/edit.html.twig', [
'editForm' => $editForm->createView(),
]);
}
Dodam tylko, że jak dam
To plik img jest widoczny! Tylko dlaczego nie ładuje go do formularza??
Tak samo w profilerze plik jest widoczny
Jak ktoś już uświadczył podobnego problemu bardzo proszę o pomoc.