bastinald / laravel-livewire-model
Laravel Livewire form data modelling trait.
Package info
github.com/bastinald/laravel-livewire-model
pkg:composer/bastinald/laravel-livewire-model
Requires
- laravel/framework: ^8.0
- livewire/livewire: ^2.0
This package is auto-updated.
Last update: 2026-03-11 12:46:31 UTC
README
This package contains a trait which makes Laravel Livewire form data model manipulation a breeze. No more having to create a Livewire component property for every single form input. All form data will be placed inside the $model property array.
Documentation
Installation
Require the package via composer:
composer require bastinald/laravel-livewire-model
Usage
The WithModel Trait
Add the WithModel trait to your Livewire components:
class Login extends Component
{
use WithModel;
//
}
Getting Model Data
Get all model data as an array:
$array = $this->getModel();
Get a single value:
$email = $this->getModel('email');
Get an array of specific values:
$credentials = $this->getModel(['email', 'password']);
Setting Model Data
Set a single value:
$this->setModel('name', 'Kevin');
Set values using an array:
$this->setModel([
'name' => 'Kevin',
'email' => 'kevin@example.com',
]);
Set values using Eloquent model data:
$this->setModel(User::first());
Binding Model Data
Just prepend your wire:model attribute with model.:
<input
type="email"
placeholder="{{ __('Email') }}"
class="form-control"
wire:model.defer="model.email"
>
Validating Model Data
Use the validateModel method to validate model data:
$this->validateModel([
'name' => ['required'],
'email' => ['required', 'email'],
]);
This method works just like the Livewire validate method, so you can specify your rules in a separate rules method if you prefer.