当前位置: 首页 > 知识库问答 >
问题:

Laravel一个表单两个提交按钮

昝卓
2023-03-14

我有自己的观点;

<form class="form-horizontal" role="form" method="GET" action="">

@foreach($input as $key => $value)
    @foreach($value as $subkey => $subvalue)                            
        {!! Form::hidden($key.'_'.$subkey, $subvalue) !!}
    @endforeach
@endforeach

{!! Form::hidden('postcode_id', $postcode_lookup['id']) !!}

<input class="btn btn-info"    type="submit" name="action" value="Map View"     />
<input class="btn btn-warning" type="submit" name="action" value="CSV Download" />

</form>

我有自己的路线。php代码;

if ( Input::get('action') === 'CSV Download' )
{
  Route::get('/export/csv', 'ExcelController@index');
}

if ( Input::get('action') === 'Map View' )
{
  Route::get('/map/all', 'MapController@index');
}

如果用户单击一个按钮,我希望他们调用ExcelController。如果是另一个,我要叫MapController。。。两个不同的控制器!

我的操作路线应该是什么?目前,当我单击其中一个时,它只会停留在当前页面上。

共有2个答案

公羊俊德
2023-03-14

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

//例如:

<input type="submit" class="btn btn-success" value="save and close" name="submitbutton">
<input type="submit" class="btn btn-success" value="apply" name="submitbutton">
            

//控制器:

switch($request->submitbutton) {

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

    case 'apply': 
        //action for save and route here
    break;
}

    if ($request->submitbutton == 'apply') {
        return redirect()->route('admin.products.edit', $product->id)->with('success', "new product {$product->name} created as well.");
    } else if ($request->submitbutton == 'save and close'){
        return redirect()->route('admin.products.index')->with('info', "product {$product->name} saved");
    } 

我的完整答案在这里https://stackoverflow.com/a/63087033/308578

江温书
2023-03-14

操作路由为空,因此指向当前页面。应该是去某条路线。例如

<.. action="{{ URL::to('split_form') }}" ..>

然后,您可以将筛选器附加到路由(在routes.php中):

Route::get('split_form', array('before' => 'form_splitter'));

并定义这个过滤器(在filters.php中)

Route::filter('form_splitter', function()
{
    if ( Input::get('action') === 'CSV Download' )
    {
        Redirect::to('/export/csv');
    }
    elseif ( Input::get('action') === 'Map View' )
    {
       Redirect::to('/map/all');
    }
});

并定义实际路线(routes.php)

Route::get('/export/csv', 'ExcelController@index');
Route::get('/map/all', 'MapController@index');

虽然Angelo的答案在Blackbischop的第二个链接中也可以为你想要的东西工作,通过使用javascript为你节省一个过滤器/重定向

 类似资料:
  • 我使用的是Laravel5.1,我想制作一个带有两个提交按钮的表单-保存和保存草稿。 但是当我发布表单时,除了提交值之外,我拥有所有字段。 我读到Laravel不会把提交按钮值在POST当表单通过ajax发送,所以你能帮我怎么做吗? 我已经尝试了下面的一些代码: 在我的路线上。我有: 提前感谢

  • 我在一个网站上有两个类似的表单,我想合并成一个有两个提交按钮的表单。他们使用大多数相同的数据。 第一个表单使用GET将数据发送到另一台服务器。第二个表单通过电子邮件发送。我想强烈鼓励网站用户在尝试选项二之前先使用选项一。 我知道如何使用javascript实现这一点,但不是以一种退化良好的方式。还有其他方法可以有两个提交选项吗?或者其他如何实现这一点的想法?谢谢

  • 我有一个登录表单,有电子邮件和密码字段。我有两个提交按钮,一个用于登录(如果用户已经注册),另一个用于注册(新用户)。由于登录操作和注册操作是不同的,所以我需要一些方法来将带有所有发布数据的请求重定向到其各自的操作。有没有一种方法可以在Laravel 4中以纯Laravel的方式实现这一点?

  • 问题内容: 我有以下代码,基本上它正在执行两个操作。第一个是将我的表单数据提交到google电子表格,另一个操作是将我的第二个表单文本框值数据提交到另一个页面文本框值。这个怎么做? 从上面可以看到,这是第一页,第二页是第二种形式的Sankranthi_Reserv2.asp。我想在那儿传递文本框值,所以问题是第一种形式是提交给Google文档并存储数据,但是第二种形式需要将手机号码文本框值传递给下

  • 问题内容: 我有一个看起来像这样的表格: 当我绑定到表单的Submit()时,似乎无法访问用户单击的图像。因此,我试图绑定到单击图像本身(),该图像总是提交表单,无论我是否尝试 返回false; event.stopPropogation(); 要么 event.preventDefault(); 因为所有这些都是表单事件。 我应该将$ .post()附加到form.submit()事件上吗,如果

  • 我正在设计一个使用html和php的登录页面。它包括两个按钮,一个用于登录,另一个用于重定向到注册页面。我计划使用php代码验证同一页面上的登录数据。这是我的密码 但是注册按钮工作不正常。它不会重定向到注册页面。我不想把登记按钮放在表格外面。我希望保持相同的设计并实现所需的功能。