1

我有一個簡單的網站,用戶可以在其中上傳圖片,並給他們冠軍。此代碼部分應該放在哪裏?

上傳表單應該在沒有JavaScript和JavaScript的情況下工作(作爲XHR圖層)。

我有一個:

  • Form_Upload
  • Model_Post(與它的網關/映射器)
  • UploadController
  • SuperDuper - 類/資源用來處理文件上傳,生成縮略圖,將影像存儲等。

我認爲必須在UploadController :: uploadAction中完成的事情是:

  1. 創建新形式
  2. 檢查它是否是POST請求或GET請求
  3. 檢查它是否是XHR請求或定期請求
  4. Vaidate形式
  5. 下載/從形式
  6. 的Valide文件的接收文件MIME類型
  7. 使用SuperDuper轉換文件,並返回附件ID
  8. 如果一切都很好s帶有附件的ID AVE數據發佈到數據庫
  9. 返回效應初探在適當的範圍內
  10. 返回錯誤信息/表單錯誤在適當的範圍內

而且它似乎是一個很多事情在一個動作中完成。

而且有很多「ifs」,因爲這個動作應該處理不同的上下文:GET,XHR POST,POST。

是否有任何良好的Zend方式來處理這種情況(我相信它非常流行)。我應該在Controller中製作額外的私人函數來處理部分請求,或根據上下文請求嗎?

我的行爲現在是140行,看起來不對。

+0

不確定爲什麼你甚至會允許GET上傳。 – RockyFord

+0

好的一點,澄清一下:GET請求的這個操作將只返回一個上傳表單,而不處理上傳本身.foo.bar/upload僅用POST處理上載。 – jkulak

回答

0

在我看來,你應該給你的表單類使用Zend_Form的一些代碼部分。在這個班級應該是1,4,5,6點。 10你最好在flashmassanger中顯示。其餘的點必須採取行動,因此您必須在行動中調用表格。

+0

謝謝,1. Create form = $ form = new Application_Form_Post(); - 所有的代碼當然是在Forms/Post.php文件中。 – jkulak

+0

將答案標記爲已接受或upvote,如果它有幫助:) –

+0

10.我僅在重定向到其他操作時才使用flashmessage,在上載成功後,這不是這種情況。 – jkulak