在laravel中发布两种不同形式的数据?

时间:2013-11-16 18:22:49

标签: php forms post laravel laravel-4

我有一个登录和注册表单,我想在同一页面上设置。

登录表单工作得很好,虚拟数据已经输入到我正在使用的数据库中。

我遇到的问题是我得到一个方法调用错误(假设因为我对两个不同的函数有相同的post函数调用。

目前在我的routes.php文件中我有

    // route to process the form
Route::post('/', array('uses' => 'HomeController@doLogin'));

Route::post('/', array('uses' => 'HomeController@doRegister'));

我的控制器文件看起来像这样(对不起,它有点长,我认为提供所有内容更好,而不是假设某人只能从我的解释中理解我的问题)

public function doRegister() {
    $v = User::validate(Input::all());

    if ( $v->passes() ) {
            User::create(array(
                    'name'=>      Input::get('name'),
                    'email'=>     Input::get('email'),
                    'password'=>  Hash::make(Input::get('password')),
            ));

            return 'Thanks for registering!';
    } else {
            return Redirect::to('/')->withErrors($v->getMessages());
    }
}

public function doLogin()
{
    // validate the info, create rules for the inputs
    $rules = array(
        'email'    => 'required|email', // make sure the email is an actual email
        'password' => 'required|alphaNum|min:3' // password can only be alphanumeric and has to be greater than 3 characters
    );

    // run the validation rules on the inputs from the form
    $validator = Validator::make(Input::all(), $rules);

    // if the validator fails, redirect back to the form
    if ($validator->fails()) {
        return Redirect::to('/')
            ->withErrors($validator) // send back all errors to the login form
            ->withInput(Input::except('password')); // send back the input (not the password) so that we can repopulate the form
    } else {

        // create our user data for the authentication
        $userdata = array(
            'email'     => Input::get('email'),
            'password'  => Input::get('password')
        );

        // attempt to do the login
        if (Auth::attempt($userdata)) {

            // validation successful!
            // redirect them to the secure section or whatever
            // return Redirect::to('secure');
            // for now we'll just echo success (even though echoing in a controller is bad)
            echo 'SUCCESS!';

        } else {        

            // validation not successful, send back to form 
            return Redirect::to('/');

        }

    }
}

据我所知,这是因为我没有为我的注册表单设置正确使用的功能。

希望我在解释我的问题时做得很好,请问任何解决方案? (相当新的laravel)

1 个答案:

答案 0 :(得分:2)

一个表单将发布登录,另一个表单将注册

Route::post('login', array('uses' => 'HomeController@doLogin'));
Route::post('register', array('uses' => 'HomeController@doRegister'));

然后你会打开表格,如:

{{ Form::open(array('url' => 'login')) }}

{{ Form::open(array('url' => 'register')) }}

编辑: 例如,表单将放在您的主视图中,然后您只需从登录和注册方法重定向,而不显示视图。