Laravel 6 - один контроллер с несколькими функциями - PullRequest
0 голосов
/ 16 марта 2020

У меня 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();

Это не работает, и я думаю, что это тоже не имеет смысла ..

Есть ли способ, которым я могу достичь этого ?? Спасибо ...

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Вы должны создать Action / Helper / Service Class, но если вы хотите вернуть методы контроллера, вам нужно будет сделать что-то вроде

return response([
    'user_count' => (new AdminDashboardController())->countAllUser(), 
    'sales' => (new AdminDashboardController())->totalSales(),
]);
0 голосов
/ 16 марта 2020

Хотя метод вызова контроллера из другого контроллера не является хорошей практикой, вы должны использовать службу.

Но если вы действительно хотите это сделать, вы можете сделать это с помощью

\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 на экземпляре контроллера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...