Consent

This site uses third party services that need your consent.

Skip to content
Steven Roland

Simplifying Routing with Laravel Folio: A Comprehensive Guide

Laravel Folio is a powerful page-based routing package that simplifies the process of creating routes in Laravel applications. By leveraging Blade templates, Folio allows developers to generate routes effortlessly, streamlining the development process. In this post, we'll explore how to use Laravel Folio, its key features, and some practical examples.

Getting Started with Laravel Folio

To begin using Laravel Folio, first install it via Composer:

composer require laravel/folio:^1.0@beta

Then, run the Folio installer:

php artisan folio:install

This command will register Folio's service provider and set up the necessary directory structure.

Creating Your First Folio Route

With Folio, creating a route is as simple as creating a Blade template in the resources/views/pages directory. For example, to create a page accessible at /greeting, create a greeting.blade.php file:

<div>
    Hello World
</div>

That's it! Folio automatically generates a route for this page.

Dynamic Routes with Folio

Folio supports dynamic routing using wildcards in file names. For instance, to create a user profile page:

// resources/views/pages/users/[id].blade.php

<div>
    User Profile for ID: {{ $id }}
</div>

This creates a route that matches /users/{id}.

Route Model Binding

Folio seamlessly integrates with Laravel's route model binding. To use this feature, name your file after the model:

// resources/views/pages/users/[User].blade.php

<div>
    Welcome, {{ $user->name }}!
</div>

Folio will automatically resolve the User model and inject it into your view.

Middleware and Authentication

You can apply middleware to your Folio routes using PHP code at the top of your Blade files:

<?php

use function Laravel\Folio\{middleware};

middleware(['auth']);
?>

<div>
    This page is protected!
</div>

Suggested Usages

  • Static Pages: Quickly create about, contact, or terms of service pages without defining routes manually.

  • Blog Platform: Use Folio to create a simple blog with dynamic post pages and category listings.

  • Documentation Site: Build a documentation site with nested pages and automatic routing.

  • User Profiles: Create dynamic user profile pages with route model binding.

  • Admin Panels: Rapidly prototype admin interfaces with authenticated routes.

Best Practices

  • Organize your pages logically within the pages directory to maintain a clear structure.

  • Use route model binding for cleaner, more expressive code when working with database records.

  • Leverage Folio's middleware support to secure sensitive pages.

  • Combine Folio with Laravel Livewire for dynamic, interactive pages without complex JavaScript.

  • Keep your Blade templates focused on presentation, moving complex logic to controllers or services.

Laravel Folio offers a fresh approach to routing in Laravel applications, making it easier than ever to create and manage routes. By embracing convention over configuration, Folio allows developers to focus on building features rather than managing route definitions. Whether you're building a simple static site or a complex web application, Folio can help streamline your development process and keep your codebase clean and organized.

Remember, Folio is still in beta, so keep an eye on the official documentation for updates and new features as it evolves. Happy coding with Laravel Folio!

More posts

Mastering Authentication with Laravel Fortify

Laravel Fortify simplifies authentication in Laravel apps. It handles user registration, login, password resets, and two-factor authentication. Set up Fortify, configure views, customize authentication logic, and implement advanced features like 2FA. Use for SPAs, custom login flows, and enhanced security.

The Unavoidable Nature of Pain: Embracing Our Emotions

Inspired by John Green's quote, this post explores the unavoidable nature of pain and why it's crucial to embrace rather than avoid it. It offers insights on healthy ways to process pain and highlights its role in personal growth and empathy.