2016-12-28 12 views
0

私はsymfonyに新しいですし、私が使用して新しいページにリストからオブジェクトを渡すしようとしています:Symfony3識別子idがAppBundle エンティティのクエリのために不足している

<a href="{{ path('fooUpdate', { 'id': item.id }) }}">Update</a>

リストフーの({% for item in list %})が細かいオブジェクト、オブジェクトが完全にデータベースからロードされますが、リンクがあるため、この教義エラーの動作しません。ここで

The identifier id is missing for a query of AppBundle\Entity\Foo

はFooのクラスです:

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="foo") 
*/ 
class Foo { 

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue 
*/ 
private $id; 

/** 
* @ORM\Column(type="string")  
*/ 
private $description; 

//getters and setters 

そしてここで、コントローラのメソッドです:

http://127.0.0.1:8000/foo/fooUpdate/?id=1 

だから私は何をしないのです:

/** 
* @Route("/foo/fooUpdate/", name="fooUpdate") 
*/ 
public function updateAction($id, Request $request) { 
    $foo = $this->getDoctrine()->getRepository('AppBundle:Foo')->find($id); 
    return $this->render('/foo/fooUpdate.html.twig', array(
      'foo' => $foo 
    )); 
} 

、それが働いているようなエラーのURLがあるので、リンク自体は、見えます?

また、POSTでこれを行う方法はないので、IDはURLに表示されませんか?あなたは、ルート内のIDが欠落している

答えて

0

@Route("/foo/fooUpdate/{id}", name="fooUpdate") 
+0

ありがとう!それはうまくいったが、ポストを介してそれを行う方法についてのアイデアは? – Eduardo

+0

投稿データを送信するためのフォームなどがあるとします。 * @Method({"POST"})のようにルートを設定する必要があります。 Saludos – Hokusai

0

実際に、あなたはまた、デフォルト値を設定する必要があります

/** 
* @Route("/foo/fooUpdate/{id}", 
*  defaults={"id" = 0}, 
*  name="fooUpdate") 
*/ 

デフォルトはあなたがパラメータを渡していない場合に使用されています。

は限りセッションに見て、URLにIDを設定しないよう: https://symfony.com/doc/current/components/http_foundation/sessions.html

あなたはそれを行うことができるはずですが、それは多くの作業(コーディング)です。

関連する問題