Es wird immer eine invokable Methode erwartet - laravel?

2 Antworten

Die __invoke-Methode wird immer dann aufgerufen, sobald versucht wird, ein Objekt so aufzurufen, als sei es eine Funktion.

Beispiel:

class Example {
}

$example = new Example;
$example(123); // invoke

Beim Routing gibst du nun explizit die LoginController-Klasse als Controller Action (Callable) an, statt die login-Funktion. Berücksichtige hierbei, dass die Route::get-Methode nur zwei Argumente erwartet. Dein drittes Argument dürfte nicht berücksichtigt werden.

Übergib als zweites Argument entweder ein Array:

Route::get('/login', [LoginController::class, 'login'])->name('login');

oder verwende die @-Syntax:

Route::get('/login', 'LoginController@login')->name('login');

Single-Action-Controller (mit __invoke) zu nutzen, ist im Übrigen auch nicht verkehrt, da deine Controller dadurch leichtgewichtig bleiben und klar funktional aufgeteilt sind.

Der Fehler könnte durch vieles ausgelöst worden sein.

Versuche:
Binde in deinen LoginController folgendes ein:

 use Illuminate\View\View;

Und, schreibe folgende function um :

   public function login():View{

        return view('home');

    } 

Anton732 
Beitragsersteller
 08.04.2023, 19:33

Er mag es immer noch nicht :(

0