我有这个代码,但找不到解决方案。 无法自动装配“App\Controller\RecipeController::edit()”的参数 $recipe:它引用类“App\Entity\Recipe”,但不存在此类服务。
这是代码:
<?php
namespace App\Controller;
use App\Entity\Recipe;
use App\Form\RecipeType;
use App\Repository\RecipeRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Doctrine\ORM\EntityManagerInterface;
class RecipeController extends AbstractController
{
#[Route('/recettes', name: 'recipe.index')]
public function index(Request $request , RecipeRepository $repository, EntityManagerInterface $em ): Response
{
$recipes = $repository->findAll();
//$recipes = $repository->findWithDurationLowerThan(5);
// pour cree une recette directement dans la base de donnee
$recipe = new Recipe();
$recipe->setTitle('Barbe à Papa')
->setSlug('barbe-papa')
->setContent('Il est indispensable pour faire de la barbe à papa de disposer dune machine speciale, qui peut se louer a la journée chez les spécialistes de locations de matériels divers bien connus, ou en faisant une recherche internet.')
->setDuration(5)
->setCreatedAt(new \DateTimeImmutable())
->setUpdatedAt(new \DateTimeImmutable());
$em->persist($recipe);
$em->flush();
//si je veux supprimer une recette dans la base de donnee alors : $em->remove($recipes[0]) puis $em->flush()
return $this->render('recipe/index.html.twig',[
'recipes' => $recipes
]);
}
#[Route('/recettes/{slug}-{id}', name:'recipe.show' , requirements:['id'=>'\d+' , 'slug'=> '[a-z0-9-]+'])]
public function show(Request $request , string $slug , int $id , RecipeRepository $repository): Response
{
$recipe = $repository->find($id); // je peux aussi chercher par le slug avec findOneBy(['slug' => $slug])
if ($recipe->getSlug() != $slug) {
return $this->redirectToRoute('recipe.show', ['slug'=> $recipe->getSlug(), 'id' => $recipe->getId()]);
}
return $this->render('recipe/show.html.twig', [
'recipe' =>$recipe
]);
}
#[Route('/recettes/{id}/edit' , name: 'recipe.edit') ]
public function edit(Recipe $recipe)
{
$form = $this-> createForm(RecipeType::class, $recipe);
return $this->render( 'recipe/edit.html.twig' , [
'recipe'=> $recipe,
'form' => $form
]);
}
}
模板:
type {% extends 'base.html.twig' %}
{% block title "Recette : " ~ recipe.title %}
{% block body %}
<h1>{{recipe.title}}</h1>
{{ form(form) }}
{% endblock %}
我删除了composer.json中的symfony\ux-turbo,但没有任何变化。stackoverflow中没有任何变化。对不起,因为我真的是初学者
请确保您的实体未在配置中自动连接(排除):
services:
_defaults:
autowire: true
autoconfigure: true
public: false
App\:
resource: '../../src/App'
exclude: '../../src/App/{Entity}' # it's important to exclude