首页 > 解决方案 > Laravel 6 - 一个具有多种功能的控制器

问题描述

multiple users的系统中有,所以我想要一个具有不同dashboard.

My Controller look like this:

-Dashboard
 ->AdminDashboardController
 ->UserDashboardController

在我的 AdminDashboardController我有 2 个功能

    public function countAllUser()
    {
        $cards = User::count();

        return response()->json(['cards' => $cards]);
    }

    public function totalSales()
    {
        return 'Hello';
    }

And In My DashboardController Like this

  public function index(Request $request)
    {
        $adminUser = auth()->user()->roles->pluck('name')->toArray();

        if($adminUser[0] === 'administrator') {
            return (new AdminDashboardController())->countAllUser();
        }
    }

是的,它的工作,但如果我尝试这样的事情

return (new AdminDashboardController())->countAllUser()->totalSales();

它不起作用,我认为这也没有意义..

有没有办法我可以做到这一点?谢谢...

标签: phplaravel

解决方案


虽然从另一个控制器调用控制器方法不是一个好习惯,但您应该使用服务。

但如果你真的想这样做,你可以通过

\App::call('App\Http\Controllers\AdminDashboardController@countAllUser');

或者

(new AdminDashboardController())->countAllUser();

或者

app(\App\Http\Controllers\AdminDashboardController::class)->countAllUser();

你的代码

return (new AdminDashboardController())->countAllUser()->totalSales();

没有工作,因为 (new AdminDashboardController())->countAllUser()返回一个\Illuminate\Http\JsonResponse实例,你应该调用totalSales一个控制器实例


推荐阅读