Php 如何在Laravel中注册后将用户重定向到上一个URL
使用Laravel 5.6中的内置身份验证系统,我的网站上有多个页面,需要用户注册或登录以执行购买等操作 我让我的登录重定向回用户登录前所在的上一页,但似乎无法使其与注册一起工作 我正在寻找的示例:Php 如何在Laravel中注册后将用户重定向到上一个URL,php,laravel,authentication,Php,Laravel,Authentication,使用Laravel 5.6中的内置身份验证系统,我的网站上有多个页面,需要用户注册或登录以执行购买等操作 我让我的登录重定向回用户登录前所在的上一页,但似乎无法使其与注册一起工作 我正在寻找的示例: //protected $redirectTo = '/'; (Originally Returning Back To Home) //WHAT I'M USING NOW TO TRY AND REDIRECT BACK TO PREVIOUS PAGE protected func
//protected $redirectTo = '/'; (Originally Returning Back To Home)
//WHAT I'M USING NOW TO TRY AND REDIRECT BACK TO PREVIOUS PAGE
protected function redirectTo()
{
return url()->previous();
}
// Guards/Redirects user to home if logged in and tries to access register page again.
public function __construct()
{
$this->middleware('guest');
}
// If users email exists in my transaction database, I show them a Thank you message upon registering. And Still want to redirect them back to previous page.
public function registered($request, $user) {
$where = [
['customer_email', $user->email],
['user_id', null],
];
if (Transaction::where($where)->exists()) {
Transaction::where($where)->update(['user_id' => $user->id]);
return url()->previous()
->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
}
}
//protected $redirectTo = '/'; (Originally Returning Back To Home)
//WHAT I'M USING NOW TO TRY AND REDIRECT BACK TO PREVIOUS PAGE
protected function redirectTo()
{
return url()->previous();
}
// Guards/Redirects user to home if logged in and tries to access register page again.
public function __construct()
{
$this->middleware('guest');
}
// If users email exists in my transaction database, I show them a Thank you message upon registering. And Still want to redirect them back to previous page.
public function registered($request, $user) {
$where = [
['customer_email', $user->email],
['user_id', null],
];
if (Transaction::where($where)->exists()) {
Transaction::where($where)->update(['user_id' => $user->id]);
return url()->previous()
->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
}
}
下面是我如何在使用登录控制器时得到这个结果的,但是没有使用注册控制器
public function showLoginForm()
{
if (session('link')) {
$myPath = session('link');
$loginPath = url('/login');
$previous = url()->previous();
if ($previous = $loginPath) {
session(['link' => $myPath]);
}else{
session(['link' => $previous]);
}
}
else{
session(['link' => url()->previous()]);
}
return view('auth.login');
}
protected function authenticated(Request $request, $user)
{
return redirect(session('link'));
}
如果您有任何帮助,我们将不胜感激。好的,您可以用与登录控制器类似的方式进行操作
public function showLoginForm()
{
if (session('link')) {
$myPath = session('link');
$loginPath = url('/login');
$previous = url()->previous();
if ($previous = $loginPath) {
session(['link' => $myPath]);
}else{
session(['link' => $previous]);
}
}
else{
session(['link' => url()->previous()]);
}
return view('auth.login');
}
protected function authenticated(Request $request, $user)
{
return redirect(session('link'));
}
您首先需要在Register Controller中创建以下函数,以覆盖默认值并将URL保存到会话中
/**
* Show the application registration form.
*
* @return \Illuminate\Http\Response
*/
public function showRegistrationForm()
{
if (session('link')) {
$myPath = session('link');
$registerPath = url('/register');
$previous = url()->previous();
if ($previous = $registerPath) {
session(['link' => $myPath]);
}else{
session(['link' => $previous]);
}
} else{
session(['link' => url()->previous()]);
}
return view('auth.register');
}
然后再次在注册控制器中创建以下函数
protected function redirectTo()
{
return redirect(session('link'))->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
}
您可能还希望在其中设置默认路由,以防他们直接访问注册表表单。所以
protected function redirectTo()
{
if(session('link')){
return redirect(session('link'))->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
}
return redirect('/home')->with('success', 'Thank you for your previous transaction! Go to your Profile to review your transaction history.');
}
你说的链接是重复的,这是我用来让登录正确重定向回上一页的链接。我想问的是,注册后我如何为用户做同样的事情。页面X只是一个视图吗?您是否向其传递了任何数据?因此,根据您所说的,用户位于/page1,然后转到/register并填写注册并提交。如果注册成功,您希望他们返回到/page1?@ColinMD是的,这是正确的。无论用户从哪个页面访问注册页面,都是我希望他们返回的页面。@UkraineInTheMembrane是的,第X页只是一个视图。关于我们的示例视图/页面。我正在通过数据库和foreach循环将数据传递到我的大多数页面。没问题,很高兴我能帮助hi ColinMd,我使用的代码完全相同,在提交注册表时出现了这个错误。ErrorException标头不能包含多个标头,新行检测到,知道原因吗?感谢您发现,您不能在函数redirectTo()中使用redirect,您可以返回'home';