wire:submit
您是视觉学习者吗?
通过我们深入的屏幕录制掌握 Livewire
立即观看
Livewire 通过 wire:submit
指令轻松处理表单提交。通过将 wire:submit
添加到 <form>
元素,Livewire 将拦截表单提交,防止默认浏览器处理,并调用任何 Livewire 组件方法。
以下是使用 wire:submit
处理“创建帖子”表单提交的基本示例
<?php namespace App\Livewire; use Livewire\Component;use App\Models\Post; class CreatePost extends Component{ public $title = ''; public $content = ''; public function save() { Post::create([ 'title' => $this->title, 'content' => $this->content, ]); $this->redirect('/posts'); } public function render() { return view('livewire.create-post'); }}
<form wire:submit="save"> <input type="text" wire:model="title"> <textarea wire:model="content"></textarea> <button type="submit">Save</button></form>
在上述示例中,当用户单击“保存”提交表单时,wire:submit
会拦截 submit
事件并在服务器上调用 save()
操作。
Livewire 自动调用
preventDefault()
wire:submit
与其他 Livewire 事件处理程序不同,因为它在内部调用 event.preventDefault()
,而无需 .prevent
修饰符。这是因为您在监听 submit
事件时很少会不想阻止其默认浏览器处理(对端点执行完整表单提交)。
Livewire 在提交时自动禁用表单
默认情况下,当 Livewire 将表单提交发送到服务器时,它将禁用表单提交按钮并将所有表单输入标记为 readonly
。这样,用户在初始提交完成之前无法再次提交同一表单。
深入了解
wire:submit
只是 Livewire 提供的众多事件侦听器之一。以下两页提供了关于在应用程序中使用 wire:submit
的更完整的文档