steelants/livewire-form

Simple Form class based on Laravel & Livewire

0.0.1 2025-01-11 13:07 UTC

This package is auto-updated.

Last update: 2025-02-11 14:02:03 UTC


README

Basic Form Component For Creation/Update of model

<?php
namespace App\Livewire\PersonChild;

use App\Models\PersonChild;
use SteelAnts\LivewireForm\Livewire\FormComponent;
use SteelAnts\LivewireForm\Traits\HasModel;

class Form extends FormComponent
{
    use HasModel;

    public $class = PersonChild::class;

    //default rules generated from $fillables of model or define own if you are not using them HasModel Attribute
    protected function rules()
    {
        return [
            'properties.name' => 'required',
        ];
    }

    //Oweride default labels generated from $fillables of model or define own if you are not using them HasModel Attribute
    function labels(){
        return [
            'name' => __('Jméno')
        ];
    }

    function onSuccess(){
        //DO SOMETHING ON SUCESS;
    }

    function onError(){
        //DO SOMETHING ON ERROR;
    }
}
@livewire('form-test', ['model' => 2])

User For Form Component example

<?php
namespace App\Livewire\User;

use App\Models\User;
use SteelAnts\LivewireForm\Livewire\FormComponent;
use SteelAnts\LivewireForm\Traits\HasModel;

class Form extends FormComponent
{
    use HasModel;

    public $class = User::class;

    protected function rules()
    {
        return [
            'properties.name' => 'required|max:255|unique:users,name',
            'properties.email' => 'required|string|email|max:255|unique:users,email' . ($this->model->exists() ? ',' . $this->model->id : ''),
            'properties.password' => 'sometimes|string|min:8|max:255',
            'properties.password_confirmation' => 'required_with:properties.password|string|same:properties.password',
        ];
    }

    //Oweride default labels generated from $fillables of model or define own if you are not using them HasModel Attribute
    function labels(){
        return [
            'name' => __('Name'),
            'email' => __('Email'),
            'password' => __('Password'),
            'password_confirmation' => __('Password confirmation')
        ];
    }

    function onSuccess(){
        //DO SOMETHING ON SUCESS;
    }

    function onError(){
        //DO SOMETHING ON ERROR;
    }
}

Dev Enviroment

  1. Clone Repo to [LARVEL-ROOT]packages/
  2. Modify ;composer.json`
    "autoload": {
        "psr-4": {
            ...
            "SteelAnts\\LivewireForm\\": "packages/livewire-form/src/"
            ...
        }
    },
  1. Add (code below) to: [LARVEL-ROOT]packages/bootstrap/providers.php
SteelAnts\LivewireForm\LivewireFormServiceProvider::class,

Contributors

Other Packages

steelants/datatable

steelants/form

steelants/modal

steelants/boilerplate