如何在Laravel中为表单提交两个动作?

时间:2013-10-11 04:32:10

标签: forms laravel blade

如果标题不是那么清楚:

我有一个表单和两个提交按钮(或者我可以使用一个提交按钮,另一个可以只是一个按钮或一个锚标签)并希望每个人都将我的表单提交给另一个动作...

非常感谢任何帮助

3 个答案:

答案 0 :(得分:1)

您可以为第二个提交按钮指定一个HTML名称,然后检查该名称是否在POST语句中设置。

<input name="back" type="submit" value="Go Back">
<input name="next" type="submit" value="Continue">

答案 1 :(得分:0)

您可能需要使用jQuery来实现这一目标。构建表单时,完全省略方法。然后,给出两个按钮id

<button id="submit-1">Submit 1</button>
<button id="submit-2">Submit 2</button>

然后,使用jQuery.postjQuery.ajax提交表单数据。

有关详细信息,请参阅这些文章:

  1. http://api.jquery.com/jQuery.post/
  2. http://api.jquery.com/jQuery.ajax/

答案 2 :(得分:0)

"flash"数据可能最简单。

在您的路线中:

Route::post('/test', 'TestController@postTest');
Route::get('/test', 'TestController@getTest');
Route::any('/testSubmit1Action', function()
{
    var_dump(Input::old());
});

然后你的TestController:

class TestController extends BaseController {

    public function postTest()
    {
        // Refer to getTest() below for how these buttons are named.
        // We can check for the existence of a certain button and process
        if(Input::has('submit1'))
        {
            // Redirect to different route / URI
            Input::flash();
            return Redirect::to('/testSubmit1Action');

            // Alternatively, you could process action 1 here
        }

        if(Input::has('submit2'))
        {
            // Process action 2
        }
    }

    public function getTest()
    {
        // I recommend putting this in a view / blade template
        // eg... return View::make('foo.bar');
        echo Form::open();
        echo Form::submit('Submit Action 1', array('name' => 'submit1'));
        echo Form::submit('Submit Action 2', array('name' => 'submit2'));
        echo Form::close();
    }

}