私の最初のsymfony2プロジェクトは、データベースに保存されたゲスト(イベントに招待された)のリストです。私は持っています
最後に、コントローラーの「createGuest」メソッドで、すべてが正常に機能します。
データベースからゲストを削除することができません。 Symfony2の公式本を含む、Webのすべてのチュートリアルを読みました。それが言うことはすべてです:
オブジェクトの削除
オブジェクトの削除は非常に似ていますが、エンティティマネージャのremove()メソッドの呼び出しが必要です:
$em->remove($product);
$em->flush();
コントローラのdeleteAction($ id)をtwigテンプレートに接続する方法については、それ以上のことは述べていません(「オブジェクトの更新」セクションにもドキュメントがありません)。私がしたいのは、すべてのゲストをviewGuestsアクションとviewGuests twigテンプレートでリストすることです。すべての行の横に削除アイコンがあり、クリックしてエントリを削除する必要があります。シンプルですが、ドキュメントが見つからず、どこから始めればよいかわかりません。
public function deleteGuestAction($id)
{
$em = $this->getDoctrine()->getEntityManager();
$guest = $em->getRepository('GuestBundle:Guest')->find($id);
if (!$guest) {
throw $this->createNotFoundException('No guest found for id '.$id);
}
$em->remove($guest);
$em->flush();
return $this->redirect($this->generateUrl('GuestBundle:Page:viewGuests.html.twig'));
}
Symfonyは賢く、find()
を自分で作る方法を知っています:
public function deleteGuestAction(Guest $guest)
{
if (!$guest) {
throw $this->createNotFoundException('No guest found');
}
$em = $this->getDoctrine()->getEntityManager();
$em->remove($guest);
$em->flush();
return $this->redirect($this->generateUrl('GuestBundle:Page:viewGuests.html.twig'));
}
コントローラーでIDを送信するには、{{ path('your_route', {'id': guest.id}) }}
を使用します
DELETE FROM ... WHERE id = ...;
protected function templateRemove($id){
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('XXXBundle:Templates')->findOneBy(array('id' => $id));
if ($entity != null){
$em->remove($entity);
$em->flush();
}
}
私が理解していることから、あなたはあなたのテンプレートに何を入れるべきかということに苦労しています。
例を示します。
<ul>
{% for guest in guests %}
<li>{{ guest.name }} <a href="{{ path('your_delete_route_name',{'id': guest.id}) }}">[[DELETE]]</a></li>
{% endfor %}
</ul>
これで、ゲスト内のすべてのオブジェクトが繰り返され(オブジェクトコレクションの名前が異なる場合は、名前を変更する必要があります!)、名前が表示され、正しいリンクが配置されます。ルート名は異なる場合があります。