Laravel GET Route ruft falsche Klassenfunktion auf

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Laravel GET Route ruft falsche Klassenfunktion auf

by Guest » 25 Dec 2024, 22:21

Ich lerne Laravel in einem bestehenden 11.29.0-Projekt.
Ich habe zwei Routen definiert:

Code: Select all

//api.php

Route::get('/items/approved', [ItemController::class, 'approved']);

Route::get('/items/{id}', [ItemController::class, 'show']);
In meinem Controller habe ich Folgendes:

Code: Select all

//ItemController.php

namespace App\Http\Controllers;
use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
use App\Http\Resources\ItemResource;

class ItemController extends Controller{

//MARK: Approved
public function approved(): AnonymousResourceCollection
{
error_log('inside approved');

//...
}

//MARK: Show
public function show($id): ItemResource|JsonResponse
{
error_log('inside show');

//...
}
}

Wenn ich eine GET-Anfrage an /items/approved mache, wird immer die Funktion show($id) aufgerufen.
Sollte die Tatsache, dass /items/approved vor /items/{id} steht, es nicht so machen Die Funktion „approved()“ wird aufgerufen? Was übersehe ich?

Top