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...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie einen URI wie
login?r=articles
können Sie abrufenarticles
wie diese:Können Sie auch
request()->has('r')
zu bestimmen, wenn es vorhanden ist, in der URI.Sowie
request()->filled('r')
um herauszufinden, wenn es vorhanden ist, in der URI und sein Wert ist nicht leer.Wenn Sie mit Laravel verwenden Sie dann Ihre Helfer, die genauso funktioniert out of the box, D. H. wenn Sie Ihre route oder die url hat einen auth middlewere und Benutzer nicht eingeloggt ist, dann geht es zum login und in Ihrem postSign oder innen nur versuchen,
UserController
}
//Abfrage
oder
//Ohne Query-String...
//Mit Query-String...
ersten Verwendung dieser
dann bekommen Sie alle Daten aus Ihrer url