2016-05-24 8 views
0

私はsymfony2フレームワークを使用しています。エンティティのリストを表示するテンプレートを持っています(私の製品など)。リスト内のいくつかの他のアクションは、実際に私はそれを前に行っているが、その機会に私はいくつかのアクション(例えば、toggleActiveAction(Product $ product))フォームを使用せずに、リンクを作成して作成したが、クロスサイトリクエスト偽造攻撃の危険にさらされていますが、誰かが各エンティティのフォームを作成するよう提案していますが、これは良い方法ではないと思います。どうすれば対応できますか?symfonyのエンティティのリストのフォームを変更する方法

+2

ようこそStackOverflow! [ツアー](http://stackoverflow.com/tour)にアクセスし、[どうすれば良い質問をしますか?](http://stackoverflow.com/help/how-to-ask)を読んでください。その後、あなたの質問に応じて編集し直してください。 – Jan

答えて

0
/** 
* 
* @Route("/news/update/{id}", name="news_update") 
*/ 
public function updateAction(Request $request, $id) { 
     //Here I call my service 
     $newsService = $this->get('app.news_service'); 

     //Here I receive the Entity I want to edit 
     $toUpdate = $newsService->fetchById($id); 

     //Here I create the form that I have defined in AppBundle\Forms 
     $form = $this->createForm(new NewsForm(), $toUpdate); 


     $form->handleRequest($request); 

     if ($form->isSubmitted() && $form->isValid()) { 

      //Once the form is submitted my newsService updates the Entity in the database. 
      $newsService->update($toUpdate); 

      //I redirect overview 
      return $this->redirectToRoute('news_show', array(), 301); 
     } 

     return $this->render('default/news/updateNews.html.twig', array(
        'base_dir' => realpath($this->container->getParameter('kernel.root_dir') . '/..'), 
        'form' => $form->createView(), 
     )); 
    } 

これは、最初のユーザーが変更を保存するために送信するフォームにあなたをもたらすだろう。

+0

それは私が欲しいものではありません。あなたはあなたのニュースを表示するために10行のテーブルを持っていると想像して、それぞれの前に削除とアクティブ/非アクティブのボタンが必要ですどのようにあなたはそれを行うことができますか?各ニュースの適切なボタンで10フォームを作成するか? – wing

+0

いいえ、2つのフォームを作成します。彼らは製品のIDを受け取り、所望の動作を実行する。 これは削除または有効化を有効にします。理想的には、フォームを使用しないでください。コントローラで使用するサービスを使用するだけです。 – HermanTheGermanHesse

+0

私はこれが私の望むものだと思っています。(あなたのサービスとあなたのビューを私に見せてください) – wing

0

は、リストを表示するのと同じ構造を使用します。

{% if product.active %} {{ product.attribute }} //It will put the products attribute in the browser if it is active {%endif%}

ここで小枝のチェックをproduct.active ==(=)trueの場合:使用できるビューでアクティブな製品を表示するには 。 forループで使用して、すべての製品をループすることができます。

{% for product in products %} 
//The if block could go here. 
{% enfor %} 
+0

あなたは私が意味することを理解していないと思う、私はそれぞれのエンティティlonely.forを変更することができます単一のフォームが必要です。例えば、私は10の製品を表示したい各製品はアクティブ、非アクティブ、削除またはいくつかのものelse.iそれらのための10のフォームを作成することができますが、私はそれが間違っていると思う – wing

関連する問題