blogチュートリアル(9) 記事の削除 ================================ .. note:: この記事は、Symfony 2.0.7 で動作確認しています。 次は、ユーザーが既存の記事を削除できるようにしてみましょう。 記事を削除するURIのルーティングの作成 ------------------------------------- 記事を削除するURI (※ここではページではない) が増えますので、対応するルーティングを追加する必要があります。 ``src/My/BlogBundle/Resources/config/routing.yml`` に ``blog_delete`` ルート(route)を追加してください。 .. code-block:: yaml # src/My/BlogBundle/Resources/config/routing.yml blog_delete: pattern: /{id}/delete defaults: { _controller: MyBlogBundle:Default:delete } 削除アクションの作成 -------------------- 続いて、\ ``Default`` コントローラに ``delete`` アクションを追加します。 .. code-block:: php // src/My/BlogBundle/Controller/DefaultController.php use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class DefaultController extends Controller { // ... public function deleteAction($id) { $em = $this->getDoctrine()->getEntityManager(); $post = $em->find('MyBlogBundle:Post', $id); if (!$post) { throw new NotFoundHttpException('The post does not exist.'); } $em->remove($post); $em->flush(); return $this->redirect($this->generateUrl('blog_index')); } } このコードでは、与えられた ``{id}`` を元に、該当記事のレコードに対応するエンティティを取得しています。 エンティティが見つからなかった場合は、\ ``NotFoundHttpException`` 例外をスローして処理を中断します。 エンティティが見つかった場合は、\ ``EntityManager`` の ``remove()`` メソッドで削除指示を出して、\ ``flush()`` します。 削除後は記事一覧にリダイレクトします。 また、記事の削除をするためのリンクを、記事一覧に追加します。 .. code-block:: jinja {# src/My/BlogBundle/Resources/views/Default/index.html.twig #}
Id | Title | CreatedAt | Operation |
{{ post.id }} | {{ post.title }} | {{ post.createdAt|date('Y/m/d H:i') }} | Delete |
No posts found |