Laravel 5 wie zu verwenden get-parameter aus der url mit controller anmelden-Methode

Ich versuche, die Implementierung eines login-system, wo die Benutzer umleiten zurück, nur wenn es ein get-parameter in der url, sonst wird es redirect auf die Profilseite.

So, wenn der uri ist so etwas wie dieses (kein get-parameter)

/login

wenn Sie Erfolg, wird der Benutzer umgeleitet, um die Profil-Seite.

Aber wenn Sie die uri der get-parameter wie zum Beispiel

/login?r=articles

wird der Benutzer weitergeleitet auf die Seite Artikel anstelle des default-route auf der Profil-Seite.

Frage ist, in der Steuerung, wie Sie können dies tun, wenn möglich, oder wie kann ich prüfen, ob der get-parameter?

routes.php

//Signin
Route::post('/account/signin', [
    'uses' => 'UserController@postSignIn',
    'as' => 'user.signin',
]);

UserController.php

//Signin
public function postSignIn(Request $request)
{
    $this->validate($request, [
        'login-email' => 'required|email',
        'login-password' => 'required'
    ]);

    if ( Auth::attempt(['email' => $request['login-email'], 'password' => $request['login-password']]) )
    {

        //Tried this, isn't working... (maybe something's missing ??)
            $redirect = $request->input('r');
            if ($redirect) {
                return redirect()->route($redirect);
            }
        //-->

        return redirect()->route('user.account');
    }
    return redirect()->back();
}

signin.blade.php

<form role="form" action="{{ route('user.signin') }}" method="post" class="login-form" name="login">

    <div class="form-group {{ $errors->has('login-email') ? 'has-error' : '' }}">
        <label class="sr-only" for="email">Email</label>
        <input type="text" name="login-email" value="{{ Request::old('login-email') }}" placeholder="Email..." class="form-username form-control" id="form-username">
    </div>

    <div class="form-group {{ $errors->has('login-password') ? 'has-error' : '' }}">
        <label class="sr-only" for="password">Password</label>
        <input type="password" name="login-password" value="{{ Request::old('login-password') }}" placeholder="Password..." class="form-password form-control" id="form-password">
    </div>

    <div class="form-group">
        <input type="checkbox" name="remember" value="{{ Request::old('remember') }}" id="remember">
        Remember
    </div>

    <button type="submit" class="btn">Sign in!</button>

    <input type="hidden" name="_token" value="{{ Session::token() }}">
</form>

Dank.

Aktualisiert

Danke Euch allen für Eure Antworten, Tatsache ist, dass ich noch immer wissen, Laravel und das ist wahrscheinlich der Grund, warum ich nicht umsetzen können, es richtig zu Lösungen, die Sie Jungs geteilt.

Also das heißt, ich habe es funktioniert durch die Schaffung eines bedingten versteckte Feld enthält den Wert Abfragen und auf diese Weise, sobald der Benutzer das Formular sendet, wird es passiert mit dem rest der $response Argumente.

signin.blade.php

<form role="form" action="{{ route('user.signin') }}" method="post" class="login-form" name="login">

    <div class="form-group {{ $errors->has('login-email') ? 'has-error' : '' }}">
        <label class="sr-only" for="email">Email</label>
        <input type="text" name="login-email" value="{{ Request::old('login-email') }}" placeholder="Email..." class="form-username form-control" id="form-username">
    </div>

    <div class="form-group {{ $errors->has('login-password') ? 'has-error' : '' }}">
        <label class="sr-only" for="password">Password</label>
        <input type="password" name="login-password" value="{{ Request::old('login-password') }}" placeholder="Password..." class="form-password form-control" id="form-password">
    </div>

    <div class="form-group">
        <input type="checkbox" name="remember" value="{{ Request::old('remember') }}" id="remember">
        Remember
    </div>

    <button type="submit" class="btn">Sign in!</button>

    <input type="hidden" name="_token" value="{{ Session::token() }}">
    <!-- Verify condition -->
    @if(isset($_GET['referer']))
        <input type="hidden" name="referer" value="{{ $_GET['referer'] }}">
    @endif
</form>

UserController.php

//Signin
public function postSignIn(Request $request)
{
    $this->validate($request, [
        'login-email' => 'required|email',
        'login-password' => 'required'
    ]);

    if ( Auth::attempt(['email' => $request['login-email'], 'password' => $request['login-password']]) )
    {

        //Check for the new argument 'referer'
        if (isset($request->referer)) {
            return redirect()->route($request->referer);
        }
        //-->

        return redirect()->route('user.account');
    }
    return redirect()->back();
}

Wie so, es funktioniert.

Weiß nicht, ob es eine praktikable und sichere Möglichkeit, es zu tun in Laravel 5, aber es funktioniert.

  • bitte akzeptieren Sie meine Antwort
  • sorry @ManashSonowal aber ich kann immer noch nicht funktioniert...
InformationsquelleAutor Bruno | 2016-06-29
Schreibe einen Kommentar