Я делаю приложение для библиотеки, вы можете установить изображение книги, и моя форма будет выглядеть так:
Желтое изображение разногласия - это фактическое изображение моей Книги.
Если я загружаю файл, я не вижу его (трюк с ярлыком для загрузки, поэтому ввод скрыт).
Было бы идеально, если бы изображение могло измениться ТОЛЬКО, КОГДА я загружаю изображение.
Например, я загружаю синее изображение разногласий (пример), поэтому изображение изменяется прямо сейчас в форме, и оно будет обновляться только в случае отправки формы).
Как я могу это сделать?
Мой контроллер:
/**
* @Route("/{id}/edit", name="book_edit", methods={"GET","POST"})
*/
public function edit(Request $request, Book $book, BookRepository $bookRepository, ClientRepository $clientRepository): Response
{
$form = $this->createForm(BookType::class, $book);
$image_source = $book->getImage()->getSrc();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$image = new Image();
if($request->files->get('book')['image']['src'] !== null && $request->files->get('book')['image']['src'] !== 'no_change')
{
$file = $request->files->get('book')['image']['src'];
$name = $file->getClientOriginalName('src');
$fileName = $this->generateUniqueFileName().'.'.$file->guessExtension();
$alt = $book->getImage()->getText();
$image->setSrc($fileName);
$image->setText($alt);
$book->setImage($image);
$fileSystem = new Filesystem();
try {
$fileSystem->remove(array('symlink', $this->getParameter('Cover_directory'), $image_source));
} catch (IOExceptionInterface $exception) {
echo "An error occurred while creating your directory at ".$exception->getPath();
}
try {
$file->move($this->getParameter('Cover_directory'), $fileName);
} catch(FileException $e) {
// die($e);
}
}
else {
$image = $book->getImage();
$image->setSrc($image_source);
$image->setText($image->getText());
$book->setImage($image);
}
if($request->request->get('client'))
{
$client = $clientRepository->find($request->request->get('client'));
$book->setClient($client);
}
$this->getDoctrine()->getManager()->persist($image);
$this->getDoctrine()->getManager()->persist($book);
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('book_index', ['id' => $book->getId()]);
}
$clients = $clientRepository->findAll();
// dump($clients);die;
return $this->render('book/edit.html.twig', [
'book' => $book,
'form' => $form->createView(),
'clients' => $clients,
]);
}