Files
einundzwanzig-portal/app/Http/Livewire/City/Form/CityForm.php
HolgerHatGarKeineNode ce972e66c6 new forms added for courses
2023-02-27 18:37:23 +01:00

64 lines
1.4 KiB
PHP

<?php
namespace App\Http\Livewire\City\Form;
use App\Models\City;
use Illuminate\Validation\Rule;
use Livewire\Component;
class CityForm extends Component
{
public ?City $city = null;
public string $fromUrl = '';
protected $queryString = [
'fromUrl' => [
'except' => null,
],
];
public function rules()
{
return [
'city.country_id' => 'required',
'city.name' => [
'required',
Rule::unique('cities', 'name')
->ignore($this->city),
],
'city.longitude' => 'required',
'city.latitude' => 'required',
];
}
public function mount()
{
if (!$this->city) {
$this->city = new City();
}
if (!$this->fromUrl) {
$this->fromUrl = url()->previous();
}
}
public function save()
{
$this->validate();
$this->city->longitude = str($this->city->longitude)
->replace(',', '.')
->toFloat();
$this->city->latitude = str($this->city->latitude)
->replace(',', '.')
->toFloat();
$this->city->save();
return redirect($this->fromUrl ?? url()->route('welcome'));
}
public function render()
{
return view('livewire.city.form.city-form');
}
}