관리자에서 이미지 업로드를 올바르게 설정했고 다음 문서를 따랐습니다 : https://symfony.com/doc/current/bundles/EasyAdminBundle/integration/vichuploaderbundle.html
이제 EasyAdminBundle을 사용하지 않는 시스템의 다른 부분에서 이미지를 업로드해야합니다. 컨트롤러에 다음이 있습니다.
public function crearequiposAction(Request $request) {
$equipo = new Equipos();
$form = $this->createForm(EquiposType::class, $equipo);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$fecha=new \DateTime('now');
$ruta = $equipo->getImageFile();
$nombrep = $equipo->getLogo();
$nombre = $nombrep.'.'.$ruta->guessExtension();
$fileDir = $this->container->getParameter('kernel.root_dir').'/../web/uploads/images/equipos';
$ruta->move(
$fileDir,
$nombre
);
$equipo->setLogo($nombre);
$equipo->setUpdatedAt($fecha);
$em->persist($equipo);
$flush = $em->flush();
if ($flush == null) {
$status = "Documento registrado correctamente";
$this->session->getFlashBag()->add("status", $status);
return $this->redirectToRoute("listado-torneos");
} else {
$status = "No se registro equipo";
}
} else {
$status = "No se registro equipo";
}
$this->session->getFlashBag()->add("status", $status);
}
return $this->render('AppBundle:Equipos:informacionequipos.html.twig', array(
"form" => $form->createView()
));
}
이미지가 올바르게 업로드되지만 다음 오류가 표시됩니다.
알 수없는 오류로 인해 "prueba.jpeg"파일이 업로드되지 않았습니다.
그리고 나는이 문제를 해결하는 방법을 모른다. 어떤 아이디어?
문안 인사
이것이 해결책이며 문제는 두 부분으로 나뉩니다.
먼저 양식에서 다음과 같이 양식을 변경해야합니다.
use Vich\UploaderBundle\Form\Type\VichFileType;
use Symfony\Component\HttpFoundation\File\File;
$builder
->add('nombre')
->add('grupo')
->add('numero')
->add('imageFile', VichFileType::class)
->add('torneos')
->add('save', SubmitType::class, array(
"attr" => array(
"class" => "save"
)));
두 번째 변경 사항은 컨트롤러에 있으며 번들을 사용할 때 더 이상 이동을 사용할 필요가 없으며 이미지가 기본적으로 업로드 될 때만 사용됩니다.
이것은 컨트롤러의 코드입니다.
public function crearequiposAction(Request $request) {
$equipo = new Equipos();
$form = $this->createForm(EquiposType::class, $equipo);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($equipo);
$flush = $em->flush();
if ($flush == null) {
$status = "Equipo registrado correctamente";
$this->session->getFlashBag()->add("status", $status);
return $this->redirectToRoute("listado-torneos");
} else {
$status = "No se registro equipo";
}
} else {
$status = "No se registro equipo";
}
$this->session->getFlashBag()->add("status", $status);
}
return $this->render('AppBundle:Equipos:informacionequipos.html.twig', array(
"form" => $form->createView()
));
}
문안 인사
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다