2

2つのフォームを持つページ(編集ページと呼びます)があります。1つはデータベース内の1つのテーブルの情報を更新するためのもので、送信ボタンは[保存]があり、もう1つは別のテーブルの情報を設定するためのものです。独自のボタン「追加」とリンク-既存の行を削除するための「削除」。[保存]、[追加]、または[削除]の3つのボタンのいずれを押しても、同じページにとどまる必要があります。物事を作るための最良の方法となるものを教えてください。

  1. 削除を押すと、deleteControllerを呼び出す別のURLにルーティングされます。このURLの本文では、前のページにリダイレクトされます(ページの編集)。

    Deleteはリンクであるため、これ以上のことは思いつきませんでした。お気軽にご提案ください。私のやり方が非常に愚かであるか、それとも受け入れられるかを教えてください。

  2. 2つのフォームを管理する方法は?

    1. 最初は、1つのコントローラーで両方のフォームを管理できると思いましたが、問題があります。コントローラーが、適切な処理を行うために押されたボタン([保存]または[追加])を正確に識別できる方法がわかりません。2つのボタンを同時に押すと2つのテーブルが更新されるたびに更新できますが、ほとんどの場合1つのテーブルのみが変更されるため、これは不合理だと思います。

    2. 別のアイデアは、削除で同じことを繰り返すことです-いくつかのアクション(更新と永続化)を実行する2つの異なるコントローラーを用意してから、編集ページにリダイレクトします。これにより、ユーザーは最初のページのURLを決して離れないように感じることができます。 (編集ページ)。

このタスクを管理するための最良の方法は何ですか?

4

1 に答える 1

2

SensioGeneratorBundleCRUD フォームとコントローラーを生成できます。Symfony Standard エディションで出荷されます。あなたはそれを見るべきです。生成されたコードは簡単にカスタマイズでき、よく設計されています。


  1. あなたは正しい選択をしました。削除ボタンをフォームに配置しmethod="delete"、コントローラーで次のようなことを行うこともできます。

    /**
     * @Route("/{id}")
     * @Method("DELETE")
     * @ParamConverter("entity", class="MyAdminBundle:MyEntity")
     */
    public function deleteAction(MyEntity $entity)
    {
        // Do deletion
        // ...
    
        // Do redirection
        $this->redirect($this->generateUrl('list'));
    }
    
  2. 別のmethod(エディション: POST、作成: PUT) を設定できます。別の設定をしてから、リダイレクトを行う
    ことができます。action

于 2012-08-07T14:39:09.693 に答える