VeldoraDocs

2. Routing & HTTP Layer

All web routes are defined in routes/web.php. The framework injects the global $router instance automatically.

Basic Routes

routes/web.php
PHP
// routes/web.php

use App\Controllers\HomeController;
use App\Controllers\PostController;
use App\Controllers\AuthController;

// Closure route returning a view
$router->get('/', fn() => view('welcome'));

// Controller action route
$router->get('/posts', [PostController::class, 'index']);
$router->post('/posts', [PostController::class, 'store']);
$router->get('/posts/{id}', [PostController::class, 'show']);
$router->put('/posts/{id}', [PostController::class, 'update']);
$router->delete('/posts/{id}', [PostController::class, 'destroy']);

Route Parameters

Route parameters are wrapped in curly braces and injected directly into controller methods by name:

routes/web.php
PHP
// Route
$router->get('/users/{id}/posts/{slug}', [PostController::class, 'userPost']);

// Controller
class PostController
{
    public function userPost(string $id, string $slug): Response
    {
        $post = Post::where('user_id', '=', $id)
                    ->where('slug', '=', $slug)
                    ->first();

        return view('posts.show', ['post' => $post]);
    }
}

Route Groups & Middleware

Group routes that share common path prefixes or middleware:

routes/web.php
PHP
// Protected routes
$router->group(['middleware' => ['auth']], function ($r) {
    $r->get('/dashboard', [DashboardController::class, 'index']);
    $r->get('/profile', [ProfileController::class, 'edit']);
    $r->put('/profile', [ProfileController::class, 'update']);
});

// Admin group with prefix and dual middleware
$router->group(['prefix' => '/admin', 'middleware' => ['auth', 'admin']], function ($r) {
    $r->get('/users', [AdminController::class, 'users']);
    $r->delete('/users/{id}', [AdminController::class, 'deleteUser']);
});


Building with AI Assistants?
Copy the Veldora AI Developer Prompt to teach ChatGPT, Claude, Cursor, or Gemini all framework APIs for error-free coding.