我是一个 Symfony2 新手,遇到了编辑表单和教义的问题。
我似乎以某种方式从我的数据库中获取了一个损坏的对象。
此代码工作正常...
$FormDebug = new Link();
$FormDebug->setUrl('http://www.mysite.com');
$editForm = $this->createFormBuilder($FormDebug)
->add('url','url')
->add('description','text')
->getForm();
虽然这不...
$repository = $this->getDoctrine()->getRepository('HemekonomiLinksBundle:Link');
$user = $this->container->get('security.context')->getToken()->getUser();
$userLink = $repository->findBy(
array('id' => $id, 'user' => $user->getId())
);
$editForm = $this->createFormBuilder($userLink)
->add('url','url')
->add('description','text')
->getForm();
所以我想我得到了一个表单生成器不同意的对象..?没有错误消息,只是我没有得到一个填写了所获取对象的实际值的表单,而是一个空表单。
当我 var_dump() 从数据库返回的对象时,我可以看到存在正确的值(以及用户对象的所有属性 - 这是导致我的问题的原因吗?对象包含的变量比表单多?)。用户在那里的原因当然是只从属于该特定用户的数据库中整理出那些链接行。
更新:我在这里添加了两个 var_dump(),首先是我希望从数据库中检索的对象类型(只是描述对象的示例),其次是实际检索到的对象,我可以看到存储库查找操作返回一个数组而不是一个对象,但我的对象似乎被包括在内......为什么我不知道......
我所期望的
object(Company\LinksBundle\Entity\Link)#556 (4) { ["id":protected]=> NULL ["user":protected]=> NULL ["description":protected]=> NULL ["url":protected]=> string(25) "http://www.mysite.com" }
DB返回什么
array(1) { [0]=> object(Company\LinksBundle\Entity\Link)#553 (4) { ["id":protected]=> int(9) ["user":protected]=> object(Company\UserBundle\Entity\User)#145 (19) { ["id":protected]=> int(3) ["username":protected]=> string(5) "user1" ["usernameCanonical":protected]=> string(5) "user1" ["email":protected]=> string(6) "1@1.se" ["emailCanonical":protected]=> string(6) "1@1.se" ["enabled":protected]=> bool(true) ["salt":protected]=> string(31) "oltkauxmgw000w8wgw84ckggg8sw880" ["password":protected]=> string(88) "AFKlCO774d/4D8DHD3P/sXYYApS32jzdLm5GlZEICnOq8xyKT/xVjbnAziMUadecN0yBlxiH5QZK09s5KJxbsA==" ["plainPassword":protected]=> NULL ["lastLogin":protected]=> object(DateTime)#149 (3) { ["date"]=> string(19) "2012-06-27 07:04:24" ["timezone_type"]=> int(3) ["timezone"]=> string(16) "Europe/Stockholm" } ["confirmationToken":protected]=> NULL ["passwordRequestedAt":protected]=> NULL ["groups":protected]=> NULL ["locked":protected]=> bool(false) ["expired":protected]=> bool(false) ["expiresAt":protected]=> NULL ["roles":protected]=> array(0) { } ["credentialsExpired":protected]=> bool(false) ["credentialsExpireAt":protected]=> NULL } ["description":protected]=> string(22) "Beskrivning av länken" ["url":protected]=> string(16) "http://testlink.se" } }
数据库返回实际的链接对象和连接到它的用户对象会在这里发生什么,我的工作就是清除我想要的两个对象之一?
如果是这样,有没有办法,已经在存储库中 - >找到指定虽然我在我的 find 语句中的用户字段上,但我对选择用户对象不感兴趣,我只想要链接表中的内容?(我猜是 symfony2 术语中的链接对象......)?