繁体   English   中英

Laravel 6 - 一个多功能控制器

[英]Laravel 6 - One Controller with Multiple Functions

我的系统中有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() ;

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

有什么办法可以实现这个吗?? 谢谢...

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

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

\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

您应该创建 Action/Helper/Service 类,但如果您想返回控制器方法,则需要执行以下操作

return response([
    'user_count' => (new AdminDashboardController())->countAllUser(), 
    'sales' => (new AdminDashboardController())->totalSales(),
]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM