Ошибка из кода в Livewire
Правила в массиве хорошо ловят пустые поля и слишком короткий заголовок. Бизнес-ограничение может быть другим: одно конкретное значение в заголовке запрещено, хотя формально оно проходит все строковые правила. Такое условие не всегда удобно выразить одной строкой в списке правил.
После удачной проверки свойств можно самому добавить ошибку на нужное поле и прервать метод, чтобы запись в базу не создалась. Сообщение попадёт туда же, куда и ошибки из правил: под поле и в общий список.
Давайте в save сразу
после вызова проверки отсечём
запрещённый заголовок и выйдем
из метода до создания записи:
<?php
namespace App\Livewire;
use App\Models\Post;
use Livewire\Component;
class PostForm extends Component
{
public $title = '';
public $body = '';
public function clear()
{
$this->reset();
$this->resetValidation();
}
public function save()
{
$this->validate([
'title' => 'required|min:3',
'body' => 'required',
], [
'title.required' => 'Enter a title',
'body.required' => 'Enter a text',
], [
'title' => 'heading',
'body' => 'text',
]);
if ($this->title === 'Admin') {
$this->addError('title', 'This title is reserved');
return;
}
Post::create([
'title' => $this->title,
'body' => $this->body,
]);
$this->reset();
}
public function render()
{
return view('livewire.post-form');
}
}
?>
Запретите одно конкретное имя работника и покажите ошибку у этого поля.