Ресурсная Web-маршрутизация
Метод Route::resource() регистрирует набор CRUD-маршрутов для одного контроллера.
Маршрут:
use Medusa\Http\Route;
Route::resource('photos', App\Controllers\PhotoController::class);
Контроллер:
namespace App\Controllers;
use Medusa\Base\Abstracts\Response as WebResponse;
use Medusa\Base\Interfaces\Resource;
use Medusa\Http\Request;
use Medusa\Http\Response;
class PhotoController implements Resource
{
public static function index(Request $request): WebResponse
{
return new Response\Html(
sprintf(
'GET /photos | Method: index | Query params: limit %d; offset %d',
$request->get('limit', Request::GET),
$request->get('offset', Request::GET)
),
200
);
}
public static function create(): WebResponse
{
return new Response\Html('GET /photos/create | Method: create', 200);
}
public static function store(Request $request): WebResponse
{
$payload = $request->get('data', Request::POST);
return new Response\Html(
sprintf('POST /photos | Method: store | Json: %s', json_encode($payload)),
200
);
}
public static function show(string|int $id): WebResponse
{
return new Response\Html(
sprintf('GET /photos/{id} | Method: show | id: #%s', $id),
200
);
}
public static function edit(string|int $id): WebResponse
{
return new Response\Html(
sprintf('GET /photos/{id}/edit | Method: edit | id: #%s', $id),
200
);
}
public static function update(Request $request, string|int $id): WebResponse
{
$payload = $request->get('data', Request::PUT) ?? $request->get('data', Request::PATCH);
return new Response\Html(
sprintf('PUT/PATCH /photos/{id} | Method: update | id: #%s; Json: %s', $id, json_encode($payload)),
200
);
}
public static function destroy(string|int $id): WebResponse
{
return new Response\Html(
sprintf('DELETE /photos/{id} | Method: destroy | id: #%s', $id),
200
);
}
}
Результат:
| Запрос | Ответ |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|