2013-11-16 2 views
1

У меня есть вход в систему и форма регистрации, которую я хотел бы настроить на той же странице.Публикация данных из двух разных форм в laravel?

Форма входа в систему работает нормально, с фиктивными данными, уже введенными в базу данных, которую я использую.

Проблема у меня в том, что я получаю метод вызывая ошибку (предположительно потому, что у меня есть один и тот же вызов пост функции к двум различным функциям.

В настоящее время в моем файле routes.php У меня есть

// route to process the form 
Route::post('/', array('uses' => '[email protected]')); 

Route::post('/', array('uses' => '[email protected]')); 

И мой файл контроллер выглядит так (извините, это немного долго, я подумал, что было бы лучше, чтобы обеспечить все вместо того, чтобы взять на себя кто-то может понять мой вопрос от всего только моего объяснения)

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)

+0

Сценарий никогда не ударит по маршруту регистрации. Он читается сверху сверху и будет отвечать только на 1, а так как URI один и тот же, всегда будет вызываться метод doLogin. Таким образом, нет возможности зарегистрироваться. – jah

+0

@jah есть способ различать два столбца формы внутри одной и той же функции контроллера? – samayres1992

ответ

2

Одна из форм вывесит для входа, а другой для регистрации

Route::post('login', array('uses' => '[email protected]')); 
Route::post('register', array('uses' => '[email protected]')); 

И тогда вы бы открыть форму, как:

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

и

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

Редактировать: И формы будут просто размещены в вашем домашнем виде, например, а затем вы просто перенаправляетесь из методов входа и регистрации, а не показываете представление.

Смежные вопросы