symfony - @ParamConverter 注释找不到 App\Entity\Site 对象
问题描述
我正在尝试在 symfony 的项目中创建一个新的模板来放置一个攀爬转换器。但它不起作用。我有错误:
App\Entity\Site object not found by the @ParamConverter annotation
我将函数放在实体“站点”中,如下所示:
/**
* @Route("/site")
*/
class SiteController extends AbstractController
{
public function upload( KernelInterface $kernel): Response
{
$imagesDir = $kernel->getProjectDir().'/public/uploads'; // équivalent à $this->getParameter('images_directory')
dump($imagesDir) ;
return $this->render('site/show.html.twig');
}
/**
* @Route("/", name="site_index", methods={"GET"})
*/
public function index(SiteRepository $siteRepository): Response
{
return $this->render('site/index.html.twig', [
'sites' => $siteRepository->findAll(),
]);
}
/**
* @Route("/new", name="site_new", methods={"GET","POST"})
*/
public function new(Request $request): Response
{
$site = new Site();
$form = $this->createForm(SiteType::class, $site);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
//on recupère les medias transmises
$media = $form->get('site')->getData();
//on boucle sur les medias
foreach($media as $medi){
//on génère un nouveau nom de fichier
$fichier = md5(uniqid()) . '.' . $medi->guessExtension();
//on copie le fichier dans le dossier img
$medi->move(
$this->getParameter('images_directory'),
$fichier
);
//on stocke l'image dans la bdd
$img = new Media();
$img->setNom($fichier);
$site->addMedium($img);
}
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($site);
$entityManager->flush();
return $this->redirectToRoute('site_index');
}
return $this->render('site/new.html.twig', [
'site' => $site,
'form' => $form->createView(),
]);
}
/**
* @Route("/{id}", name="site_show", methods={"GET"})
*/
public function show(Site $site, MediaRepository $mediarepository, $id): Response
{
$media = $mediarepository->findBy(
['site'=>$id]
);
return $this->render('site/show.html.twig', [
'site' => $site,
'media' => $media,
]);
}
/**
* @Route("/{id}/edit", name="site_edit", methods={"GET","POST"})
*/
public function edit(Request $request, Site $site): Response
{
$form = $this->createForm(SiteType::class, $site);//j'appelle le form
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
//on recupère les medias transmises
$media = $form->get('site')->getData();
//on boucle sur les medias
foreach($media as $medi){
//on génère un nouveau nom de fichier
$fichier = md5(uniqid()) . '.' . $medi->guessExtension();
//on copie le fichier dans le dossier img
$medi->move(
$this->getParameter('images_directory'),
$fichier
);
//on stocke l'image dans la bdd
$img = new Media();
$img->setNom($fichier);
$site->addMedium($img);
}
$this->getDoctrine()->getManager()->flush();
return $this->redirectToRoute('site_index');
}
return $this->render('site/edit.html.twig', [
'site' => $site,
'form' => $form->createView(),
]);
}
/**
* @Route("/{id}", name="site_delete", methods={"POST"})
*/
public function delete(Request $request, Site $site): Response
{
if ($this->isCsrfTokenValid('delete'.$site->getId(), $request->request->get('_token'))) {
$entityManager = $this->getDoctrine()->getManager();
$entityManager->remove($site);
$entityManager->flush();
}
return $this->redirectToRoute('site_index');
}
/**
* @Route("/conv", name="site_converter")
*/
public function converter():Response
{
return $this->render('site/converter.html.twig');
}
}
我检查了其他有关此问题的答案,但我仍然找不到解决方案。你有什么想法?我放了更多代码,以便更容易理解。我希望这会很有用。这是让我遇到问题的转换器的路线。谢谢
解决方案
发生这种情况是因为您有一个名为 的路由/conv
,您应该在声明路由之前声明它/{id}
,而不是 Symfony 搜索id: conv
未找到的 Site 对象。
将converter
路由和方法声明移到您的show
路由和方法声明之前。
推荐阅读
- c# - C#高效使用HttpClient
- html - Bootstrap 4 如何使“媒体对象”响应
- jquery - 默认表单事件完成后触发 jQuery 页面重定向
- google-meet - 如何使用 API 获取 Google Meet 链接
- python - 对 Keras Tensorflow 的高精度但不好的预测
- php - npm run watch 编译一次后停止编译(laravel 8 homestead + Vue)
- python - 如何将整数转换为特定的字节大小,然后结合起来在套接字上发送
- c# - AggregateException:某些服务无法构建
- linux - 使用 FFMPEG 以非常低的 FPS 进行屏幕捕获(视频截屏)
- xpath - Power Automate - Cloud Flow - 将 xpath 用于父节点属性