Php 登录特定页面后将用户重定向到同一页面

Php 登录特定页面后将用户重定向到同一页面,php,laravel,Php,Laravel,我有这条路线: Route::group(['prefix' => '', 'middleware' => 'auth'], function(){ Route::get('/congress/create', [ 'uses' => 'CongressController@create', 'as' => 'congress.create' ]); } <form method="post" action

我有这条路线:

Route::group(['prefix' => '', 'middleware' => 'auth'], function(){
    Route::get('/congress/create', [
        'uses' => 'CongressController@create',
        'as'   => 'congress.create'
    ]);
  }
 <form method="post" action="{{route('congresses.registration', ['id' => $congress->id, 'slug' => $congress->slug])}}">
当用户访问此url时:

<li><a href="{!! route('congress.create') !!}"> Create Congress </a></li>
然后在“大会详细信息”页面中有一个包含以下路线的表格:

Route::group(['prefix' => '', 'middleware' => 'auth'], function(){
    Route::get('/congress/create', [
        'uses' => 'CongressController@create',
        'as'   => 'congress.create'
    ]);
  }
 <form method="post" action="{{route('congresses.registration', ['id' => $congress->id, 'slug' => $congress->slug])}}">
在storeQuantity方法中,存储用户为每种大会票证类型选择的数量,然后将用户重定向到注册页面:

返回视图('congressions.registration')->带有('selectedRtypes',$selectedRtypes)

因此,当用户提交表单时,他会转到“”。在此页面中,如果用户未通过身份验证,则会显示以下消息:

@if(!\Auth::check())
    <div class="alert alert-info" role="alert">
        <span>
            Already have an account? 
            <a data-toggle="modal" 
            data-target=".bd-example-modal-lg" 
            href="">Login.</a>
        </span>
    </div>
@endif
上下文示例:

将路由
route::post('/congression/{id}/{slug?}/registration')
放在
route::get('/congression/{id}/{slug?}')上面。

使用模式登录时,基础页面将保持“静态”。它可能保存“旧”信息。如果在
已验证的
函数中添加一个条件,检查路由是否等于
'Congressions.registration'
,并手动将
$Redirect设置为此页面,该怎么办


作为旁注,最好不要在条件({slug?})之后添加任何内容,除非slug始终存在。那么你也可以去掉“?”了。我知道这是一个GET和一个POST,所以可能没有混淆。通过将slug添加到
config/sluggable.php
中的
$reserved
数组中,确保slug不能是单词“registration”

将路由
route::post('/congression/{id}/{slug?}/registration')
放在
route::get('/congression/{id}/{slug?}')上面。

使用模式登录时,基础页面将保持“静态”。它可能保存“旧”信息。如果在
已验证的
函数中添加一个条件,检查路由是否等于
'Congressions.registration'
,并手动将
$Redirect设置为此页面,该怎么办

作为旁注,最好不要在条件({slug?})之后添加任何内容,除非slug始终存在。那么你也可以去掉“?”了。我知道这是一个GET和一个POST,所以可能没有混淆。通过将slug添加到
config/sluggable.php
中的
$reserved
数组中,确保slug不能是单词“registration”

试试这个

在经过身份验证的方法中,检查前一个请求url是否等于路由('Congressions.registration')。如果是,则重定向到带有参数的路由('Congressions.registration')

登录控制器:

use Illuminate\Support\Facades\Route;

class LoginController extends Controller
{

    use AuthenticatesUsers;


    protected $redirectTo = '/home';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    protected function authenticated(Request $request, $user)
    {
        //check if the previous page route name is 'congresses.registration'
        if(Route::getRoutes()->match(Request::create(\URL::previous()))->getName() == 'congresses.registration') {
            //redirect to previous page with parameters
            return redirect(Request::create(\URL::previous())->getRequestUri());
        }
        return redirect()->intended($this->redirectTo);

    }
}
希望能有帮助。。让我知道结果

参考

试试这个

在经过身份验证的方法中,检查前一个请求url是否等于路由('Congressions.registration')。如果是,则重定向到带有参数的路由('Congressions.registration')

登录控制器:

use Illuminate\Support\Facades\Route;

class LoginController extends Controller
{

    use AuthenticatesUsers;


    protected $redirectTo = '/home';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    protected function authenticated(Request $request, $user)
    {
        //check if the previous page route name is 'congresses.registration'
        if(Route::getRoutes()->match(Request::create(\URL::previous()))->getName() == 'congresses.registration') {
            //redirect to previous page with parameters
            return redirect(Request::create(\URL::previous())->getRequestUri());
        }
        return redirect()->intended($this->redirectTo);

    }
}
希望能有帮助。。让我知道结果


参考

在经过身份验证的方法中,检查上一个请求url是否等于
路由('Congressions.registration')
。如果是,重定向到
route('congressions.registration')
谢谢,但是像这样“如果(URL::previous()==URL::route('congressions.create')){返回重定向(route('congressions.create');}否则如果(URL::previous()==URL::route('congressions.registration')){返回重定向(route('congressionals.registration');}else{return redirect()->designed($this->redirectTo);}“它不起作用。它似乎“缺少[Route:congressions.registration][URI:congression/{id}/{slug?}/registration所需的参数。错误似乎在else-if中。您知道如何让congression-id和slug使用”else-if(URL::previous()==URL::route('congressions.registration'){返回重定向(route('congressions.registration',['id'=>$congression->id,'slug'=>$congression->slug]);}“?如果您在未登录的情况下单击注册页面底部的“下一步”按钮,会发生什么情况?如果您在会议页面之后未重定向到未经身份验证用户的登录页面的原因是您希望存储来自会议页面的值,则只需有一个专门用于存储值的路径,如/congress/{id}”/{slug?}/store,然后重定向到注册页面,该页面可以添加到身份验证组,这意味着未经身份验证的用户将被要求登录。在您的身份验证方法中,检查以前的请求url是否等于
route('congressions.registration')
。如果是,则重定向到
route('congressions.registration'))
谢谢,但是像这样“如果(URL::previous()==URL::route('congressions.create')){return redirect(route('congressions.create');}否则如果(URL::previous()==URL::route('congressions.registration')){返回重定向(route('congressions.registration'));}否则{返回重定向()->($this->redirectTo);}”它不工作。它似乎“缺少[Route:congressions.registration][URI:congressions/{id}/{slug?}/registration所需的参数。错误似乎在else-if中。你知道如何让国会id和slug使用”else-if(URL::previous()==URL::Route('congressions.registration'){return redirect(路由('congressions.registration',['id'=>$congression->id,'slug'=>$congression->slug]);}“?如果您在未登录的情况下单击注册页面底部的“下一步”按钮,会发生什么情况?如果您在会议页面之后未重定向到未经身份验证用户的登录页面的原因是您希望存储来自会议页面的值,则只需有一个专门用于存储值的路径,如/congress/{id}”/{slug?}/store,然后重定向到注册页面,该页面可以添加到auth组,这意味着未经身份验证的用户将被要求登录。谢谢,但类似于“如果(URL::previous()==URL::route('Congressions.create')){return redirect(route('Congressions.create');}如果(URL::previous()==URL::route('Congressions.registration')){返回重定向(路由('congressions.registration');}否则{return
use Illuminate\Support\Facades\Route;

class LoginController extends Controller
{

    use AuthenticatesUsers;


    protected $redirectTo = '/home';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    protected function authenticated(Request $request, $user)
    {
        //check if the previous page route name is 'congresses.registration'
        if(Route::getRoutes()->match(Request::create(\URL::previous()))->getName() == 'congresses.registration') {
            //redirect to previous page with parameters
            return redirect(Request::create(\URL::previous())->getRequestUri());
        }
        return redirect()->intended($this->redirectTo);

    }
}