Bird
Raised Fist0
Laravelframework~10 mins

Single action controllers in Laravel - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a single action controller class in Laravel.

Laravel
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class WelcomeController extends Controller
{
    public function [1](Request $request)
    {
        return view('welcome');
    }
}
Drag options to blanks, or click blank then click option'
A__invoke
Bhandle
Cindex
Dshow
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'handle' or 'index' instead of '__invoke' for single action controllers.
2fill in blank
medium

Complete the route definition to use a single action controller in Laravel.

Laravel
use App\Http\Controllers\WelcomeController;

Route::get('/', [1]::class);
Drag options to blanks, or click blank then click option'
AWelcomeController
BWelcomeController@index
CWelcomeController@handle
DWelcomeController@__invoke
Attempts:
3 left
💡 Hint
Common Mistakes
Adding '@__invoke' or other method names in the route for single action controllers.
3fill in blank
hard

Fix the error in the single action controller method signature.

Laravel
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ContactController extends Controller
{
    public function [1](Request $request, $id)
    {
        return view('contact', ['id' => $id]);
    }
}
Drag options to blanks, or click blank then click option'
Ahandle
Bindex
C__invoke
Dshow
Attempts:
3 left
💡 Hint
Common Mistakes
Using method names other than '__invoke' in single action controllers.
4fill in blank
hard

Fill both blanks to create a route that uses a single action controller with middleware.

Laravel
use App\Http\Controllers\DashboardController;

Route::get('/dashboard', [1]::class)->[2]('auth');
Drag options to blanks, or click blank then click option'
ADashboardController
Bmiddleware
Cauth
Dhandle
Attempts:
3 left
💡 Hint
Common Mistakes
Using method names like 'handle' instead of 'middleware' for applying middleware.
5fill in blank
hard

Fill all three blanks to define a single action controller class with a constructor and the invoke method.

Laravel
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class ProfileController extends Controller
{
    private $service;

    public function [1](UserService $service)
    {
        $this->service = [2];
    }

    public function [3](Request $request)
    {
        return view('profile', ['data' => $this->service->getProfile()]);
    }
}
Drag options to blanks, or click blank then click option'
A__construct
B$service
C__invoke
Dhandle
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong method names like 'handle' instead of '__invoke' for the single action method.
Not assigning the constructor parameter correctly.

Practice

(1/5)
1. What is the main purpose of a single action controller in Laravel?
easy
A. To replace middleware functionality
B. To manage multiple actions in one controller
C. To handle exactly one action using the __invoke method
D. To handle database migrations

Solution

  1. Step 1: Understand the role of single action controllers

    Single action controllers are designed to handle only one action, making code simpler and focused.
  2. Step 2: Identify the method used

    They use the special __invoke method to handle that single action.
  3. Final Answer:

    To handle exactly one action using the __invoke method -> Option C
  4. Quick Check:

    Single action controller = __invoke method [OK]
Hint: Single action controllers always use __invoke method [OK]
Common Mistakes:
  • Thinking they handle multiple actions
  • Confusing with middleware or migrations
  • Assuming they require multiple methods
2. Which of the following is the correct syntax to define a single action controller in Laravel?
easy
A. class MyController { public function __invoke() {} }
B. class MyController { public function handle() {} }
C. class MyController { public function index() {} }
D. class MyController { public function action() {} }

Solution

  1. Step 1: Recall the special method for single action controllers

    Single action controllers use the __invoke() method to handle the action.
  2. Step 2: Match the syntax

    The correct syntax defines a class with a public function __invoke() method.
  3. Final Answer:

    class MyController { public function __invoke() {} } -> Option A
  4. Quick Check:

    __invoke method syntax = class MyController { public function __invoke() {} } [OK]
Hint: Look for __invoke method in the class [OK]
Common Mistakes:
  • Using index() or handle() instead of __invoke()
  • Forgetting the public visibility
  • Confusing method names with other controller types
3. Given this single action controller code, what will be the output when accessed?
class WelcomeController {
    public function __invoke() {
        return 'Hello, Laravel!';
    }
}
medium
A. Hello, Laravel!
B. Error: Method not found
C. Empty response
D. 404 Not Found

Solution

  1. Step 1: Understand __invoke method behavior

    The __invoke method runs when the controller is called as a single action, returning the string 'Hello, Laravel!'.
  2. Step 2: Predict the output

    Since the method returns a string, the response will be that string displayed.
  3. Final Answer:

    Hello, Laravel! -> Option A
  4. Quick Check:

    __invoke returns string = 'Hello, Laravel!' [OK]
Hint: __invoke returns output directly as response [OK]
Common Mistakes:
  • Expecting an error due to missing method name
  • Thinking it returns empty or 404
  • Confusing with multi-method controllers
4. Identify the error in this single action controller code:
class TestController {
    public function invoke() {
        return 'Test';
    }
}
medium
A. Return statement is invalid
B. Method should be private, not public
C. Class name must be TestActionController
D. Missing __invoke method name with double underscores

Solution

  1. Step 1: Check method name for single action controller

    The method must be named __invoke with two underscores, not invoke.
  2. Step 2: Verify method visibility and return

    Method should be public and return a value, which is correct here.
  3. Final Answer:

    Missing __invoke method name with double underscores -> Option D
  4. Quick Check:

    Method name must be __invoke [OK]
Hint: Method must be named __invoke with double underscores [OK]
Common Mistakes:
  • Using invoke instead of __invoke
  • Changing method visibility incorrectly
  • Assuming class name affects single action controller
5. You want to create a single action controller that returns a JSON response with a message 'Success'. Which code snippet correctly implements this?
hard
A. class JsonResponseController { public function __invoke() { return json_encode(['message' => 'Success']); } }
B. class JsonResponseController { public function __invoke() { return response()->json(['message' => 'Success']); } }
C. class JsonResponseController { private function __invoke() { return ['message' => 'Success']; } }
D. class JsonResponseController { public function handle() { return json(['message' => 'Success']); } }

Solution

  1. Step 1: Use __invoke method for single action controller

    The controller must have a public __invoke() method to be a single action controller.
  2. Step 2: Return a proper JSON response in Laravel

    Use Laravel's response()->json() helper to return a JSON response correctly.
  3. Final Answer:

    class JsonResponseController { public function __invoke() { return response()->json(['message' => 'Success']); } } -> Option B
  4. Quick Check:

    __invoke + response()->json() = class JsonResponseController { public function __invoke() { return response()->json(['message' => 'Success']); } } [OK]
Hint: Use response()->json() inside __invoke method [OK]
Common Mistakes:
  • Using handle() instead of __invoke()
  • Returning raw arrays without response helper
  • Using json() function which doesn't exist in Laravel
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard