2012-10-31 33 views
1

以下(簡單)的問題,從我:的Symfony2:綁定到一個實體與字段創建形式不是屬性

$user = new User(); 
    $user->setEventid(2); 
    $user->setT(new \DateTime('now')); 

    $em = $this->getDoctrine()->getManager(); 
    $em->persist($user); 
    $em->flush(); 

    $form = $this->createFormBuilder($user) 
    ->add('email', 'email') 
    ->add('terms', 'checkbox', array(
      'label'  => 'Read terms?', 
      'required' => true)) 
    ->getForm(); 

這是我的代碼。電子郵件是用戶的財產,條款不是。 我希望他們的用戶保存他們的電子郵件,並檢查條款 - 複選框,但我只需要保存電子郵件,而不是如果他們檢查框 - 如果他們不能不提交表格。

你知道我的意思嗎?我很舒服,它很簡單,以達到這個;)

第二個問題:我怎麼能給渲染從標籤id-屬性進一步handeling在jQuery中?

回答

2

要添加不在實體存在形式的領域,使用此:

->add('terms', 'checkbox', array(
    'label'   => 'Read terms?', 
    'required'  => true, 
    'mapped'  => false, // this works since Symfony 2.1 
    'property_path' => false, // this works since Symfony 2.0 
)) 

Symfony爲每個表單元素生成一個ID;只需打開呈現的頁面源代碼並查看您需要的元素的ID。

+0

真棒,謝謝!關於ID-「問題」:我的形式更加緊湊,我的元素也有ID - 我認爲我可以通過'attr'屬性實現ID的ID - 但是我怎樣才能實現它的形式? – humpdi

+0

只需將'id'屬性添加到您輸出的'form'標記中 - Symfony不會爲您輸出該標記。 –

0

如果您的實體中沒有「條款」字段,則不會保存。 關於第二個問題,這是非常簡單的ID設置爲樹枝形式,使簡單:

{{ form_label(form.name, 'Your Name', { 'attr': {'id': 'foo'} }) }} 
+0

恐怕你不得不像我這樣一個初學者跟我說話。 如果我沒有在我的實體中的術語字段它不會保存,好吧,但我不想要它被保存,如上所述。問題是,它必須是屬性來創建一個這樣的表單,因爲我已經綁定了用戶對象。 (給我看另一種方式來創建一個更靈活的表單) 第二:完全一樣,我不知道如何創建一個自定義的表單字段的表單,正如你可以在我的代碼中看到的,從用戶對象創建它。 – humpdi

相關問題