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

Laravel 4-一个表单中的两个提交按钮,两个提交都由不同的操作处理

拓拔弘扬
2023-03-14

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

共有3个答案

漆雕稳
2023-03-14

ClickCoder的答案是正确的,我唯一要替换的是,要以100%的“纯Laravel方式”完成它,将使用表单生成器来完成提交按钮。

http://laravel.com/docs/4.2/html#buttons

第一个参数是submit的值,您可以在以下选项数组中传递其名称。

所以代替:

<input type="submit" name="login" value="Login">
<input type="submit" name="register" value="Register">

你会:

{{ Form::submit('Login', ['name' => 'login']) }}
{{ Form::submit('Register', ['name' => 'register']) }}

如果愿意,您可以通过让它们共享相同的名称来完全避开If语句,并执行如下操作:

HTML:

{{ Form::submit('Login', ['name' => 'action']) }}
{{ Form::submit('Register', ['name' => 'action']) }}

php:

public function postAuth()
{
    $action = 'post' . Input::get('action'); //becomes either postLogin or postRegister
    $this->$action();
}

少一点筑巢,多一点拉维!

寿子轩
2023-03-14

我的解决方案:

首先,我建立了一个没有动作的表单

<script>
    var baseUrl = "{{ URL::to('/'); }}";   
</script>

{{ Form::open(array('url' => '', 'id'=> 'test-form')) }}
{{ Form::text('username') }}
{{ Form::password('password') }}
{{ Form::password('confirm_password') }}
<input type="submit" name="login" id="login" value="Login">
<input type="submit" name="register" id="register" value="Register">
{{ Form::close() }}

对于路线(routes.php):

Route::post('test/login', array('uses' => 'TestController@login'));
Route::post('test/register', array('uses' => 'TestController@register'));

控制器(TestController.php)

public function login(){
    //do something...
}

public function register(){
    //do something...
}

Jquery:(test.js)

$('form :submit').on('click', function(event){

    var a = $(this);
    var form = $('form');
    var action = a.attr('id');

    form.attr('action', baseUrl + '/test/' + action);
    form.submit();
});
岳佐
2023-03-14

我会这样做的

如果您的表单为(2个按钮):

{{ Form::open(array('url' => 'test/auth')) }}
{{ Form::email('email') }}
{{ Form::password('password') }}
{{ Form::password('confirm_password') }}
<input type="submit" name="login" value="Login">
<input type="submit" name="register" value="Register">
{{ Form::close() }}

创建控制器“TestController”

添加路线

Route::post('test/auth', array('uses' => 'TestController@postAuth'));

在TestController中,您有一个方法检查单击了哪个提交,还有两个方法用于登录和注册

<?php

class TestController extends BaseController {

    public function postAuth()
    {
        //check which submit was clicked on
        if(Input::get('login')) {
            $this->postLogin(); //if login then use this method
        } elseif(Input::get('register')) {
            $this->postRegister(); //if register then use this method
        }

    }    

    public function postLogin()
    {
        echo "We're logging in";
        //process your input here Input:get('email') etc.
    }

    public function postRegister()
    {
        echo "We're registering";
        //process your input here Input:get('email') etc.
    }

}
?>
 类似资料:
  • 我花了几个小时试图找到解决我问题的办法,但似乎找不到合适的办法。提前感谢您的协助! 我有一个html表单: 我想要两个提交按钮: 我想第一个提交按钮有formindb_hoh_1.php点击时的动作和第二个提交按钮有formindb_hoh_2.php的动作但我不确定如何使一个按钮有一个动作和有另一个按钮有不同的动作。

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

  • 我有自己的观点; 我有自己的路线。php代码; 如果用户单击一个按钮,我希望他们调用ExcelController。如果是另一个,我要叫MapController。。。两个不同的控制器! 我的路线应该是什么?目前,当我单击其中一个时,它只会停留在当前页面上。

  • 问题内容: 是否可以使用Django中的一个提交按钮提交两种不同的形式?我有一个称为“仪器”的形式和四个相等的形式“配置”。现在,我想始终提交一个配置和工具。例如instrument + config 1和instrument + config 2,并且每个配置都有自己的提交按钮。 我已经在配置表单中用一个按钮尝试过: 并调用js函数“ onclick”: 这是我在views.py中的方法: 问题

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

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