2014-11-14 91 views
0

我有一個Post和Attachment模型。郵政模型具有標題,主體屬性。附件具有標題,文件屬性。發佈has_many附件。如何在laravel中創建/編輯多個項目?

在單一表格中,我希望用戶能夠添加/編輯多個附件。

現在我這樣做是這樣的:

控制器@編輯:

  • 轉換一個郵政現有的附件到一個數組中,並與舊的輸入進行合併

Form View:

  • 遍歷附件和輸出字段
    • 字段名稱將是在attachments[id][title]
    • 形式如果將ID從現有附件,這將是一個整數。如果它是新的,這將是一個隨機數,小於1(在Javascript Math.random()

控制器@更新:

  • 遍歷Input::get('attachments')
    • 如果鍵是整數,驗證附件更新(文件不是必需的,我們可以使用現有的)並更新
    • 否則它是新的附件hment,驗證它的創作,並將其存儲在一個數組
    • 如果一切都有效,創建所有這些附件的
    • 如果有驗證錯誤,重定向回withInput()withErrors()

然而,在返回時,錯誤與輸入字段沒有正確關聯。我認爲這是因爲我使用數組而不是對象。有沒有更好的方法來做到這一點?

回答

1

對於laravel,我可能會先創建附件對象,然後將這些對象添加到帖子中。這也是文檔中下Inserting Related Models

$atachments = array(
    new Attachment(array('title' => 'Attachment #1.')), 
    new Attachment(array('title' => 'Image Lol.')), 
    new Attachment(array('title' => 'The answer is 42.')) 
); 

$post = Post::find(1); 

$post->attachments()->saveMany($comments); 

解釋你應該可以(當然沒有實例化一個新的附件對象)來更新以同樣的方式您的意見。

+0

驗證呢?當有驗證錯誤時,我將它們發回,並且我希望這兩個錯誤和舊輸入都存在。這沒有發生。 – 2014-11-17 07:35:47