РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
102 of 274 menu

Команда livewire:form

Команда livewire:form создает отдельный класс для управления формой, валидацией и бизнес-логикой в компонентах Livewire. Это позволяет вынести логику работы с формой из компонента в отдельный класс, делая код чище и переиспользуемым. Команда принимает один обязательный параметр - имя класса формы.

Синтаксис

php artisan livewire:form FormName

После выполнения команды в директории app/Livewire/Forms будет создан файл с классом формы. В классе можно определить свойства, правила валидации и методы.

Пример

Создадим форму для создания статьи с полями title и content:

<?php namespace App\Livewire\Forms; use Livewire\Attributes\Validate; use Livewire\Form; class ArticleForm extends Form { #[Validate('required|min:3|max:50')] public string $title = ''; #[Validate('required|min:10')] public string $content = ''; public function save() { Article::create([ 'title' => $this->title, 'content' => $this->content, ]); } } ?>

Пример

Используем созданную форму в компоненте Livewire:

<?php namespace App\Livewire; use Livewire\Component; use App\Livewire\Forms\ArticleForm; class CreateArticle extends Component { public ArticleForm $form; public function save() { $this->form->validate(); $this->form->save(); session()->flash('message', 'Article created'); } public function render() { return view('livewire.create-article'); } } ?>
<form wire:submit="save"> <input type="text" wire:model="form.title"> @error('form.title') <span>{{ $message }}</span> @enderror <textarea wire:model="form.content"></textarea> @error('form.content') <span>{{ $message }}</span> @enderror <button type="submit">Create</button> </form>

Пример

Создадим форму с дополнительными методами для редактирования:

<?php namespace App\Livewire\Forms; use Livewire\Attributes\Validate; use Livewire\Form; use App\Models\User; class UserForm extends Form { #[Validate('required|email')] public string $email = ''; #[Validate('required|min:6')] public string $password = ''; public ?User $user = null; public function setUser(User $user) { $this->user = $user; $this->email = $user->email; } public function update() { $this->validate(); $this->user->update([ 'email' => $this->email, 'password' => bcrypt($this->password), ]); } } ?>
<?php namespace App\Livewire; use Livewire\Component; use App\Models\User; use App\Livewire\Forms\UserForm; class EditUser extends Component { public UserForm $form; public User $user; public function mount(User $user) { $this->user = $user; $this->form->setUser($user); } public function update() { $this->form->update(); session()->flash('message', 'User updated'); } public function render() { return view('livewire.edit-user'); } } ?>
<form wire:submit="update"> <input type="email" wire:model="form.email"> @error('form.email') <span>{{ $message }}</span> @enderror <input type="password" wire:model="form.password"> @error('form.password') <span>{{ $message }}</span> @enderror <button type="submit">Update</button> </form>

Смотрите также

  • команду livewire:make,
    которая создает новый компонент Livewire
  • команду livewire:publish,
    которая публикует файлы конфигурации Livewire
  • команду livewire:config,
    которая управляет настройками Livewire
  • команду livewire:stubs,
    которая публикует шаблоны для генерации файлов Livewire
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить