簡體   English   中英

symfony2編輯表格和學說

[英]symfony2 edit form & doctrine issue

我是一個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" }

數據庫返回什么

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術語鏈接對象...)?

  1. (可以說)每次都使用formbuilder而不是創建一個表單類是一種不好的做法。
  2. 嘗試運行php app/console generate:doctrine:form MyApp:Myentity並使用form類(設置data_class選項后,請參閱“設置data_class”下的手冊
  3. var_dump每個對象(調試鏈接和從數據庫中拉出的鏈接)並發布它們(如果可以)。

好,

因此,經過反復嘗試后,我發現我的查找方法導致了問題。 顯然,findBy(array)還返回一個數組,為了使該單個對象進行編輯,我必須要做find($ id),通過這種方式,只有當用戶嘗試編輯自己的“ own”時,我才松開SELECTING的功能。 ”鏈接...

無論如何,我發現我的操作方式(通過比較用戶名而不是ID)可能不是最好的方法...

如果有人對此發表評論,請隨時向我指出正確的方向,否則,如果我無法解決問題,我將進行反復試驗並發布新主題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM