[英]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.