這聽起來很容易,但對我來說,這是令人困惑的。我一直在編寫一個表單來編輯已經存在的數據庫條目。其中一些字段是根據連接表中的記錄創建和填充的。Zend表格刪除按鈕
這聽起來有點粗略,所以我會試着說明它。我有一個名爲Content的內容表和一個名爲Files的表,其中包含文件名和位置。我根據提供的內容id獲取文件名,然後表單創建字段,然後用文件名填充這些字段。
public function setFiles($files) {
$i = 0;
foreach ($files as $file) {
$i++;
$fieldname = "encloseditemname{$i}";
$this->addElement('text', $fieldname, array('required' => true,
'label' => 'Enclosed item name (test)',
'value' => $file['file_url'],
));
}
}
這工作得很好,但現在我想添加一個按鈕,允許我刪除其中一個文件。所以我想應該做的是在控制器中創建一個fileDeleteAction()
,然後讓按鈕重定向到該動作,讓它刪除數據庫中的條目,然後使用表單渲染視圖。
使動作呈現不同的視圖,然後它是標準視圖,而不是問題。編寫代碼來刪除數據庫中的條目,也不是問題。使用addElements方法作爲工廠創建一個重定向到刪除操作的按鈕...巨大的問題。這是我得到了多少。
$this->addElement('button', "deleteencloseditem{$i}", array(???));
如何獲得此按鈕可重定向到刪除操作沒有它干擾,在這是用來提交表單,並呼籲在我的控制器editAction我的窗體底部提交按鈕。
我已經研究了使用一點javascript來檢測哪個按鈕被按下,但我不在家中的JavaScript還沒有找到如何找出哪個按鈕被按下,因爲按鈕的名稱和id是依賴在setFiles函數上,因此可以在deleteencloseditem1
和deleteencloseditem5000
之間變化,具體取決於它推入表單的文件名數量。
我該如何做到這一點?任何提示或建議非常感謝:)
您的客戶端版本是可悲的不工作。它似乎無法找到最大的按鈕被按下。 '$(「input.delete」)。點擊(函數(){ '正在加速按鈕與要刪除的類型,無需提交按鈕我不能設置按鈕屬性類型的我自己的擴展版本,它會無論是「按鈕」正如我在置頂的帖子創建一個按鈕元素,或提交如果我會決定創建一個提交按鈕元素。 目前正在嘗試在服務器端解決方案。 –
我已經得到了服務器端版本的工作,如你的建議,我有行動弄清楚至極按鈕被按下,並根據該有它轉發到正確的行動,至極然後刪除條目,然後重定向到以前的操作頁面。 我會承認,起初我後再次轉發刪除條目只會在一個無限循環中結束,只會被第二次刪除同一條記錄時發生DB錯誤而中斷,幸運的是' s改爲使用重定向。 –
很高興你有服務器端版本的工作。至於客戶端方法:你當然可以把'$('input.delete')'改成標識你的刪除按鈕的東西。如果您的刪除按鈕全部爲'