一种形式两种行动

时间:2010-09-28 06:11:12

标签: forms cakephp

嗨我有几个表单字段我希望点击按钮一个控件发送到操作1但是 点击按钮2,它必须被发送到动作2.目前我使用js动态更改表单动作点击。但还有其他解决方案。我不能在提交后以相同的方法进行检查,这必须是两种不同的方法。

在这种情况下,2个按钮是视图(需要显示html数据)和下载(与csv文件相同的数据)。我正在使用cakephp 1.2,但我觉得这更像是一般问题

3 个答案:

答案 0 :(得分:3)

一个表单只能有一个操作。这是HTML的限制。要在客户端解决它,您需要Javascript。

听起来更好的想法是给每个提交按钮一个独特的namevalue。这将像其他表单元素一样提交,因此您可以在Controller中检测单击了哪个按钮。从那里开始,应该只是在正常输出和下载之间切换控制器中的一些View逻辑。

答案 1 :(得分:0)

我发现解决方案很少

  1. 常规JavaScript ,点击按钮
  2. 即可更改表单操作
  3. AJAX ,点击单独的按钮将数据发送到两个单独的操作
  4. 正如 deceze 所建议的那样,在服务器端进行处理(在我的情况下这是不可能的)

答案 2 :(得分:0)

HTML5具有此{/ p>的formaction属性

<form action="/url" id="myForm">
     <input type="submit" value="save1" formAction="/url1" />
     <input type="submit" value="save2" formAction="/url2" />
</form>

如果你需要,这是一个后备。

if (!('formAction' in document.createElement('input'))){
 $('form').on('click', 'input[type=submit]', function (e) {
    var attr = this.getAttribute('formAction');

    if (attr) {
        this.action = attr; //Set the form's action to formAction
    }
  });
}