Laravel 5.1一个表单两个提交按钮

时间:2016-08-29 11:59:42

标签: php forms laravel-5

我正在使用Laravel 5.1,我想制作一个带有两个提交按钮的表单 - 保存和保存草稿。

但是当我发布我的表单时,除了提交值之外我有所有字段。

我已经读过,当表单是通过ajax发送的时候,Laravel不会将提交按钮值放在POST中,所以你能帮我解决一下这个问题吗?

我尝试过以下代码:

{!! Form::open(['url' => 'offer/create', 'method' => 'post', 'id' => 'offer-create']) !!}

....
here are my fields
....

{!! Form::submit( 'Save', ['class' => 'btn btn-default', 'name' => 'save']) !!}

{!! Form::submit( 'Save draft', ['class' => 'btn btn-default', 'name' => 'save-draft']) !!}

在我的routes.php中,我有:

Route::controller('offer', 'OfferController');

提前致谢

3 个答案:

答案 0 :(得分:19)

您可以为提交按钮使用相同的名称和不同的值属性

//示例:

{!! Form::submit( 'Save', ['class' => 'btn btn-default', 'name' => 'submitbutton', 'value' => 'save'])!!}

{!! Form::submit( 'Save draft', ['class' => 'btn btn-default', 'name' => 'submitbutton', 'value' => 'save-draft']) !!}

//控制器:

switch($request->submitbutton) {

    case 'save': 
        //action save here
    break;

    case 'save-draft': 
        //action for save-draft here
    break;
}

答案 1 :(得分:1)

似乎这不起作用(Laravel 5.5) 我尝试了这个方法来获得三个按钮:发送,发送+完成并刚刚完成,希望得到我可以在交换机中定位的名称。 Form :: submit的第一个参数将被您指定的数组的“value => xxx”部分覆盖。

因此,如果您使用翻译,交换机必须检查语言文件... https://www.dropbox.com/s/1s53gi0ufm4xz26/laravel_forms1.gif?dl=0

我的解决方案是这个,正如Two submit buttons in one form

所述

这就是HTML的样子: https://www.dropbox.com/s/grepk8leritvmj1/laravel_forms3.gif?dl=0

答案 2 :(得分:0)

最好的方法之一是使用隐藏类型的输入,然后单击按钮将值附加到该输入并在控制器端的请求参数中获取该值。 然后使用 if 和 else 条件运行您的查询。

这是隐藏输入:

<input id="submittype" type="hidden" name="submit_type" value=""></input>

这是提交按钮 div :

    <div class="text-right">
                <button class="btn btn-sm btn-primary" onclick="saveandexit()" type="submit">@lang('save &amp; exit')</button>
                <button class="btn btn-sm btn-primary" onclick="save()" type="submit">@lang('save')</button>
            <div>

This is script:
        <script>
        function save() {
              document.getElementById("submittype").value = "save";
           }
        function saveandexit() {
            document.getElementById("submittype").value = "save-and-exit";
        }
        </script>
    @endsection

And ,然后进入控制器函数:

dd($request->all());