7

説明:

エンティティの CRUD を生成し、次のデフォルト アクションを取得しました。

  • indexAction():すべてのエンティティを一覧表示します。
  • showAction($id):エンティティを (ID で) 検索して表示します。
  • deleteAction($id):エンティティを削除します。
  • 別のアクション。

そのため、param $id (例: showAction($id) ) を使用するアクション内のエンティティのみを削除できることがわかりましたが、ステップをユーザーに保存するため、indexAction テンプレート内のエンティティを削除したいと考えています。

deleteAction にはリクエストと ID が必要で、POST メソッドを使用します。

私は次のようなコードを作成しようとしていました:

<a href="{{ path('entity_delete', { 'id': entity.id }) }}" class="btn">
 <img src="{{ asset('bundles/acme/images/delete.png') }}" ... />
</a>

アクションを実行すると、次のエラーが発生します。

「GET /acme/something/4/delete」のルートが見つかりません: メソッドが許可されていません (許可: POST、DELETE)

この応答は明確で、私が期待していたものなので、フォームを使用して似たようなことをしようとしました。このようなもの:

<form id="formDelete" action="{{ path('entity_delete', { 'id': entity.id }) }}" method="post">
    <input type="hidden" name="_method" value="DELETE" />
    {{ form_widget(delete_form) }}
    <a href="{{ url('entity_delete') }}" class="btn" onclick="document.getElementById('formDelete').submit();">
        <img src="{{ asset('bundles/acme/images/delete.png') }}" ... />
    </a>
</form>

しかし、 にはパラメーターがなく、次のコードが必要な{{ form_widget(delete_form) }}ため、この行は問題です。indexAction()

$deleteForm = $this->createDeleteForm($id);
return $this->render('AcmeBundle:Demo:index.html.twig', array(
            'entities'      => $entities,
            'delete_form' => $deleteForm->createView(),
        ));

ご覧のとおり、メソッドには $id パラメータが必須ですが、createDeleteForm($id)から取得できませんindexAction()

質問:

この問題を解決する最善の方法は何ですか?

4

1 に答える 1