2013-09-23 51 views
0

我有一個包含Parent(實體)和Children(記錄)的表單。 家長有很多孩子。 目前爲止這麼好。Symfony2表單集合 - 僅顯示最新的

我需要的是,如果我編輯一個父我想只顯示最新的孩子作爲表單集合,而不是所有的人。

眼下與創建這樣我只是讓這樣的:

$entity = new WikiEntity(); 
$record = new WikiRecord(); 
$entity->addWikiRecord($record); 

而與此我只有一個形式收集 - 明顯。

現在我正在尋找一種方法,只有最新的記錄(孩子)進行編輯,並且所有較舊的記錄都不應該存在。

只是說我的目標是什麼(也許還有其他的解決方案),我想創建一個類似wiki的東西,所以每次Parent被編輯時都會創建一個新版本,所以我可以得到一箇舊版本或其他東西。所以人們不需要看到所有的版本(表單集合是做什麼的),而是隻有最新的版本(每次編輯時都會創建它)。

+0

您可以編輯最新的記錄,無需表單收集。 – ihsan

+0

@ihsan它會很好,如果你也告訴我如何=) –

+0

我錯了。有趣的是,我不記得我之前做過或多或少有點類似的事情。請參閱下面的答案。 – ihsan

回答

0

好吧,我找到了我的問題的答案。

我只是操縱我getWikiRecords()功能只返回最新的(在父功能)

所以現在在父實體爲它看起來像這樣的孩子:

public function getWikiRecords() { 
    $oneRecord = new ArrayCollection(); 
    $oneRecord[] = $this->wikiRecords->last(); 
    return $oneRecord; 
} 

當然,如果我想要所有的孩子,我現在必須使用不同的get函數。

0

我看到沒有選項只能編輯symfony2表單集合類型上最新的WikiRecord。但它可以通過操縱模板中的表單輸出來完成。

所以,這裏是我如何使用樹枝模板做的。

{% for record in edit_form.wikiRecord %} 
    {% if loop.length > 1 %} 
     {% if loop.last %} 
      {{ form_label(record.aFieldName) }} 
      {{ form_widget(record.aFieldName) }} 
     {% else %} 
      {{ form_widget(record.aFieldName, { 'attr': {'style': 'display: none'} }) }} 
     {% endif %} 
    {% else %} 
     {{ form_row(record) }} 
    {% endif %} 
{% endfor %} 

我用這或多或少類似的情況,我只能做最新的兒童可編輯。所以,這種解決方法正在起作用。 :)

+0

好的,這是一個開始。但是,如果你有65個版本(非常多的文本),那麼這將成爲一個很長的文件(即使用戶沒有看到它),你仍然可以在源代碼中看到它。難道我不能在源代碼中以某種方式壓抑存在本身,或者不必要地加載所有新的東西?這在我看來好像太多了。 –