In Regler Regler Sie eine Update-Aktion mit folgenden definieren:Symfony injiziert Lehre Manager-Instanz Methodenargumente
/**
* @Route("/product/edit/{id}")
*/
public function updateAction(Product $product)
{
// product is auto select from database by id and inject to controller action.
}
Die automatische Injektion sehr bequem ist, aber, wie die Lehre Manager-Instanz injizieren Aktion an die Steuerung, Es wäre bequemer, Doctrine Manager manuell zu erstellen. wie folgt vor:
/**
* @Route("/product/edit/{id}")
*/
public function updateAction(Product $product, ObjectManager $em)
{
$product->setName("new name");
$em->flush();
}
statt lange Codierung:
/**
* @Route("/product/edit/{id}")
*/
public function updateAction($id)
{
$em = $this->getDoctrine()->getManager();
$product = $em->getRepository(Product::class)->find($id);
if (!$product) {
throw $this->createNotFoundException(
'No product found for id '.$id
);
}
$product->setName('New product name!');
$em->flush();
return $this->redirectToRoute('app_product_show', [
'id' => $product->getId()
]);
}
Dank, das ist wirklich Magie! aber wie funktioniert es im internen? – TangMonk
Ich weiß es nicht wirklich, aber ich denke, es ist durch Reflexion Klasse erreicht. –