这听起来很容易,但对我来说,这是令人困惑的。我一直在编写一个表单来编辑已经存在的数据库条目。其中一些字段是根据连接表中的记录创建和填充的。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')'改成标识你的删除按钮的东西。如果您的删除按钮全部为'