【问题标题】:Laravel Routes - Same route, different controllersLaravel Routes - 相同的路由,不同的控制器
【发布时间】:2016-10-03 18:39:16
【问题描述】:

我想在我的网络应用程序上添加一个功能,用户访问相同的 URL 并获得不同的页面,具体取决于他们是否登录。我现在这样做的方式是使用中间件将登录的用户重定向到 /home。但是,我想做一些像 facebook 一样的事情..

当有人输入http://facebook.com时,它会分析该人是否登录,如果登录,则显示其家,如果未登录,则在同一URL上显示注册页面(您可以看到该地址在栏没有变化)

我正在尝试在我的路线上使用此代码:

Route::get('/', array('as'=>'home', 'uses'=> (Auth::check()) ? "usercontroller@home" : "homecontroller@index" ));

在这里找到:https://stackoverflow.com/a/18896113/2724978

但无论用户是否登录,它都只显示第二个控制器方法(“homecontroller@index”)。

【问题讨论】:

  • 为什么不让您的 home 方法执行身份验证检查并根据结果在控制器中加载两种不同方法之一?

标签: php laravel-5


【解决方案1】:

是我还是你不能像@AJReading 建议的那样使用普通的控制器方法来处理这个问题?

这样设置:

在你的HomeController.php

class HomeController extends Controller
{
    /**
     * Show a different view depending on whether or not the user is logged-in.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        if (Auth::check()) {
            // logged-in
            return view('home.index.authorised')->with('user', Auth::user());
        } else {
            // not logged-in
            return view('home.index.guest');
        }
    }
}

然后创建您的备用视图,例如resources/views/home/guest.blade.php

【讨论】:

    【解决方案2】:

    这正是你想要的:

        Route::get('/', function() {
        $guest = Auth::guest();
        if($guest)
        {   
            $controller = $this->app->make('App\Http\Controllers\TaskController');  
            return $controller->callAction('guest', $parameters = array());          
        }
        else
        {
           $controller = $this->app->make('App\Http\Controllers\TaskController');  
           return $controller->callAction('user', $parameters = array());         
        }        
    
    });
    

    只需将名称替换为您的名称即可。 测试:Laravel 框架版本 5.1.35 (LTS)。

    应该通过查看命名空间来进一步改进。 使用中间件提出了更好的解决方案 - 但没有保存它,现在无法重新创建它。

    答案源自/基于: Laravel single route point to different controller depending on slugs http://laravel.io/forum/10-16-2014-l5-controller-does-not-exist

    【讨论】:

      猜你喜欢
      • 2013-09-24
      • 2016-03-29
      • 2017-04-05
      • 2018-12-12
      • 2016-03-03
      • 2021-05-26
      • 2018-02-18
      • 2016-06-04
      • 2014-11-01
      相关资源
      最近更新 更多