SYMFONY3标识符ID缺少AppBundle Entity 的查询



我是Symfony的新手,我试图将对象从列表传递给新页面:

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

foo对象的 ({% for item in list %})列表很好,对象从数据库中充分加载,但是由于此学说错误,该链接不起作用:

The identifier id is missing for a query of AppBundleEntityFoo

这是foo类:

namespace AppBundleEntity;
use DoctrineORMMapping as ORM;
/** 
 * @ORMEntity
 * @ORMTable(name="foo") 
 */
class Foo {
/** 
 * @ORMId 
 * @ORMColumn(type="integer") 
 * @ORMGeneratedValue
 */
private $id;
/** 
 * @ORMColumn(type="string")    
 */
private $description;
//getters and setters

这是控制器方法:

/**
 * @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为:

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

所以我想念什么?

另外,是否有任何方法可以使用帖子进行此操作,因此ID不会出现在URL中?

您缺少路由中的ID:

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

实际上,您还应该设置默认值:

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

如果您不在参数中,则使用默认值。

至于未在URL中设置ID,请查看会话:https://symfony.com/doc/current/current/components/http_foundation/sessions.html

您应该能够做到这一点,但这是更多的工作(编码)。

相关内容

  • 没有找到相关文章

最新更新