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

Abh*_* PS 20 php laravel laravel-4

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

Cli*_*der 37

我会这样做的

如果您的表格是(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() }}
Run Code Online (Sandbox Code Playgroud)

创建一个控制器'TestController'

添加路线

Route::post('test/auth', array('uses' => 'TestController@postAuth'));
Run Code Online (Sandbox Code Playgroud)

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.
    }

}
?>
Run Code Online (Sandbox Code Playgroud)

  • 如果我理解正确,你已经有postLogin和postRegister(或类似的方法),你只需要路由到登录或注册.`Route :: post('test/auth',function(){if(Input :: get('login')){$ action ='postLogin';} elseif(Input :: get('register')){ $ action ='postRegister';}返回App :: make('TestController') - > $ action();});`这有帮助吗?无论您使用哪种控制器,都可以获得所有输入. (2认同)