這是我的情況,我有3個表格:學生 | 附件 | 學生 _attachment_ 鏈接Symfony EmbedForm
學生表通過classRef相對於鏈接表與附件相鏈接表作爲是附件表,學生表。
relations:
Students:
class: Student
refClass: StudentAttachmentLink
local: attachment_id
foreign: student_id
relations:
Attachments:
class: Attachment
refClass: StudentAttachmentLink
local: student_id
foreign: attachment_id
那麼所需要的是編輯學生,我要上傳新文件的選項(附件)
我已經通過了文件時,嵌入附件形式進入學生的形式,從而這具有奇妙示例Here
在這個例子中它們設置子窗體,然後由當前對象設置爲新的一個被設置這樣扎一起形成:
public function configure()
{
$subForm = new sfForm();
for ($i = 0; $i < 2; $i++)
{
$productPhoto = new ProductPhoto();
$productPhoto->Product = $this->getObject();
$form = new ProductPhotoForm($productPhoto);
$subForm->embedForm($i, $form);
}
$this->embedForm('newPhotos', $subForm);
}
你可以在這個例子中看到$ productPhoto-> Product = $ this-> getObject();
設置要保持
現在從我可以告訴這個祕密的關係,這是一個多對一的關係,但是我有很多很多,所以我做到以下幾點:
public function configure()
{
$attachment = new Attachment();
$attachment->Student = $this->getObject();
$form = new AttachmentForm($attachment);
$this->embedForm('newFile',$form);
}
這會產生一個錯誤: 無法調用Doctrine_Core :: set()時,第二個參數應該是設置多對多引用時Doctrine_Collection的一個實例。
我很困惑,因爲我認爲我的對象是一個Doctrine_Collection,非常感謝任何幫助!
UPDATE:
或許我問錯了問題或解決單一故障點僅部分相關。我想要做的是能夠從學生表單中添加/刪除一個附件,並讓它與該學生相關,而無需自定義formAction和save()動作。我發現,與Symfony的1.4,我可以使用:
$this->embedRelation('Attachments');
這項工作充滿了想象編輯在大多數情況下我仍然需要與它合作了一點,但我不能添加或刪除學生的附件形式,這當然期望的結果是能夠完全控制來自學生形式的附件,即添加/刪除/更新附件。
還有一個更好的方法來做到這一點的任何建議,也就是說,我應該在我的學生表單中添加一個「添加附件」鏈接,將我帶到附件/新頁面,但如果我這樣做,我該如何傳遞當前學生,所以該選項可自動...我有很多東西要學這個框架: -/
你可以編輯你的文章,不是嗎?如果沒有,我會爲你做。現在,正如我告訴你的,你使用的例子是一對多的關係。你的表單是關於一個Student對象的,你試圖設置一個集合。它不能工作。 – greg0ire 2010-11-09 20:37:40