Archived
1
0
Fork 0
This repository has been archived on 2026-06-16. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
wow-raid-bingo/app/Http/Livewire/Form/ModelForm.php

76 lines
1.5 KiB
PHP

<?php
namespace App\Http\Livewire\Form;
use App\Http\Livewire\Traits\Alert;
use Livewire\Component;
use Illuminate\Support\Str;
abstract class ModelForm extends Component
{
use Alert;
/**
* The model record
*/
public $record;
/**
* True if the record already exists in the database.
*/
public bool $exist;
/**
* Redirect after this route after record was created.
*/
public string $redirect_route;
/**
* Get the name of the model
*/
public function getModelName(): string
{
return Str::afterLast(get_class($this->record), '\\');
}
public function updated($property, $value)
{
$this->validateOnly($property);
}
/**
* Returns true if this record has not been stored in the database.
*/
public function isNew(): bool
{
return !$this->exist;
}
/**
* Submit the form, create/update record.
*/
public function submit()
{
$this->validate();
$this->record->save();
if ($this->isNew()) {
return redirect()->route($this->redirect_route)
->with('info', __("{$this->getModelName()} was successfully created."));
}
$this->info(__("{$this->getModelName()} was successfully updated."));
}
/**
* Render the setup page
*/
public function render()
{
$script = Str::lower($this->getModelName());
return view("form.$script")
->layout('layouts.admin');
}
}