Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/bastinald/laravel-livewire-routes

Laravel Livewire full page component routing.
https://github.com/bastinald/laravel-livewire-routes

component laravel laravel-livewire livewire livewire-components php routing

Last synced: 2 months ago
JSON representation

Laravel Livewire full page component routing.

Awesome Lists containing this project

README

        

# Laravel Livewire Routes

This package allows you to specify routes directly inside your full page Livewire components via a `route` method. The `route` method returns the Laravel `Route` facade, giving you complete control.

## Documentation

- [Installation](#installation)
- [Usage](#usage)
- [The Route Method](#the-route-method)
- [Using Route Parameters](#using-route-parameters)

## Installation

Require the package via composer:

```console
composer require bastinald/laravel-livewire-routes
```

## Usage

### The Route Method

Declare a `route` method in your full page Livewire components to route to them:

```php
namespace App\Http\Livewire\Auth;

use Illuminate\Support\Facades\Route;
use Livewire\Component;

class Login extends Component
{
public function route()
{
return Route::get('login')
->name('login')
->middleware('guest');
}

public function render()
{
return view('livewire.auth.login');
}
}
```

As you can see, the `route` method returns the Laravel `Route` facade, so you can specify anything you normally would in a routes file with this method.

### Using Route Parameters

Pass route parameters to the component `mount` method as usual:

```php
namespace App\Http\Livewire\Users;

use App\Models\User;
use Illuminate\Support\Facades\Route;
use Livewire\Component;

class Update extends Component
{
public $user;

public function route()
{
return Route::get('users/update/{user}')
->name('users.update')
->middleware('auth');
}

public function mount(User $user)
{
$this->user = $user;
}

public function render()
{
return view('livewire.users.update');
}
}
```

Yes, this even works with automatic model binding!