2

我一直在試圖創建一個表單,用戶只需按下一個按鈕,表單就會爲用戶添加一個新字段供用戶使用。我有2個這些動態添加的字段類型。Zend Framework動態添加表單的字段並填充

首先是一個用戶可以上傳文件的字段,通過按下添加按鈕,另一個字段被粘貼在當前字段下面並準備好使用。

我跟着一個老指導如何完成這一點的AJAX和jQuery。

本指南是準確的:http://www.jeremykendall.net/2009/01/19/dynamically-adding-elements-to-zend-form/

正如你可以看到它從2009年有點過時的但它仍然是當前的Zend Framework版本1.11.11

問題下工作但是現在出現,我想要一個編輯/更新版本的表單。我需要填充它的字段,但首先我需要爲要存儲的數據創建足夠的字段。因此,當有3個已上載的文件時,它應該創建2個附加字段並將這3個文件名放在這些字段中被編輯和更新。只需用$form->populate($stuff)是行不通的

我只是不知道如何做到這一點,並在動態添加字段教程只竟把的addAction,而不是如何創造這些條件下editAction

有沒有關於如何創建和管理這些表單的教程?我確信我不是唯一一個想要構建這種形式的人?

如果有請求,我可以添加我的代碼,但它與指南中的示例相同,只是表單中的一組不同的元素。

添加一個它使用的小例子。 用戶添加一個項目有3個文件,這些文件與文件名一起上傳,以便在數據庫中出現這樣的:File_Id : '1' , File_Name : 'SomeFile' , File_location : 'somewhere/on/my/pc/SomeFile.txt'.

現在用戶意識到自己忘了一個文件,或者希望從該列表中刪除一個文件,他進入編輯頁面,在這裏我想讓表單顯示以前添加的文件名。所以,如果有3個文件顯示3,當有2個文件顯示2等。我如何建立一個表格,根據上傳文件的數量動態添加字段,然後填充它們?

如何處理這個任何意見十分讚賞:)

回答

3

你可以利用的形式的半魔setXxx()方法。

形式內部:

public function setFiles($files) { 
    foreach ($files as $file) { 
     $this->addElement(/* add a file element */); 
     //do other stuff, like decorators to show the file name, etc. 
    } 
} 

在你的控制器:

$files = $model->getFiles(); 
$form = new Form_EditFiles(array('files' => $files)); 

通過傳遞一個數組與主要files你會做的形式嘗試調用名爲setFiles()的方法,你有方便如上所述。

這應該把你推向正確的方向,所以我希望至少。

+0

工程就像一個魅力!將需要改變一些東西,改變它的升遷,但它肯定會把我推向正確的方向!謝謝! –

+0

樂意幫忙! :) – bububaba

1

如果我理解正確,你要填充文件上傳域,這是因爲安全原因不可能的。

編輯:

您可以通過$form->addElement()控制器內添加元素(basicly就像在教程的$this->addElement()語句)

+0

我已經更新了我的帖子,並附有我想要實現的小說明,因爲它不完全清楚。我不想讓自己的文件只與它們在我的數據庫中註冊的名稱一樣,而是作爲我表單中的動態生成列表。 –

相關問題