当前位置: 首页 > 知识库问答 >
问题:

laravel重定向到路由并不总是有效

郜卓君
2023-03-14

我写了一个注销函数,简单地从数据库中删除所有必要的信息后,我清除会话和重定向注销。我想将用户重定向到主页(登陆页面),这在另一个功能中是登录(成功登录后,我会重定向到主页)。在我的代码中是这样做的:

public function logout()
    {
        $userModel = new User;
        $userToken = Session::get('userToken');
        $isCleared = $userModel->clearSessionForUser($userToken);
        if($isCleared == true)
        {
            Session::forget('userToken');
            Session::flush();
            return Redirect::route('/');        
        }else{
            $errorArray = array('errorMsg'=>'logout operation didn't succeed  ');
            return View::make('errors.error', $errorArray);
        }
    }

路线。php有以下途径:

Route::get('/', 'MainController@index');

正如我在登录时所说的那样,我以前也这样做过,但它确实起了作用,但这里的意思是:

InvalidArgumentException
Route [/] not defined.

下面是包含重定向的登录部分的外观:

$userModel = new User;
        $isUser = $userModel->validateDetails($email, $password);
        if($isUser==true)
        {
            return Redirect::route('/');
        }else{
            $errorArray = array('errorMsg'=>'The credentials doesn\'t match any user records or the account has not been activated ');
            return View::make('errors.error', $errorArray);
        }

请支持并让我知道为什么它可以一次又一次地工作,尽管这两个方法都在同一个类中并且目标相同。

共有2个答案

韦泳
2023-03-14

我不知道它是否相关-但你有一个语法错误:

$errorArray = array('errorMsg'=>'logout operation didn't succeed  ');

应该是

$errorArray = array('errorMsg'=>"logout operation didn't succeed  ");

$errorArray = array('errorMsg'=>'logout operation didn\'t succeed  ');
邹祺
2023-03-14

Redirect::route中的参数应该是路由名称。因此,如果您将路由文件修改为:

Route::get('/', array('as' => 'home', 'uses' => 'MainController@index'));

然后可以在Redirect::route中使用该路由名称:

return Redirect::route('home');

或者,您可以简单地使用Redirect::to重定向到URL:

return Redirect::to('/'); // This is the URL
 类似资料:
  • 我是一个新的拉威尔学习者。在我的Mac(macOS 10.13)上,我配置了Nginx、PHP和MySQL环境。首先,Nginx localhost:8080/laravel/public会毫无问题地显示laravel欢迎页面。但当我尝试添加自定义路线时,例如: 我有404页localhost:8080/laravel/public/test. 在我谷歌了路由404问题的解决方案后,我通过添加 请

  • 当我在web.php中定义了路由时,我在使用Laravel时遇到了一个路由未定义的错误,如下所示: 我正在从下面的代码重定向到路由 auth()代码可以工作,但当调用重定向时,我得到错误'route[home]not defined'。有没有人知道我怎么解决这个错误。任何帮助都会很好

  • 我是一个新手,希望在筛选之前进行筛选,该筛选将检查我想要的内容,并将带错误或成功的重定向返回到相同的配置文件。 这是我的过滤前函数 这是我的路线 Route::组(数组) 路由::get('/user/{username}',数组('as'= 和我的ProfileController公共功能 所以我的问题是如何让这些重定向工作,我试图搜索谷歌等,我找不到任何答案。这是我在这里的第一篇文章,我的英语

  • 我有一条基本路线,如下所示: 逻辑是我希望仅为数值。我现在要做的是,如果值是非数字的,则声明对此的重定向。假设的输入是。在这种情况下,我希望它重定向到值为的。 我尝试使用,但无法正常工作。它看起来像这样: 我更愿意将重定向放在组内,但如果这是唯一的方法,它可以放在组外。任何帮助都将不胜感激。 发生的情况是,如果我声明了路由重定向,就会出现404错误。 编辑:我想在文件。我知道如何在控制器中执行此操

  • 英文原文:http://emberjs.com/guides/routing/redirection/ 过渡与重定向 在路由中调用transitionTo或者在控制器中调用transitionToRoute,将停止当前正在进行的过渡,并开启一个新的,这也用作重定向。transitionTo具有参数,其行为与link-to助手相同。 如果过渡到一个没有动态段的路由,路由的model钩子始终都会运行。

  • 问题内容: 我有一些路线的角度应用程序,例如: 使用angular的html5路由模式,当您从应用程序内单击指向链接的链接时,这些链接可以正确解决,但是当您进行硬刷新时,这些链接当然会出现404错误。为了解决这个问题,我尝试实现基本的htaccess重写。 这适用于角度请求,但是当我尝试在我的域内加载脚本或进行ajax调用时,例如: 该脚本不会加载-它的请求被重定向,并且它尝试加载index.ht