阻止在Laravel Livewire中的页面加载时发送文本框请求



我想在加载页面时阻止Livewire发送请求。我正在使用Livewire进行搜索操作。

查看

<div class="col-md-4 my-3">
<input wire:model.debounce.500ms="search" 
type="text" 
placeholder="Search Permissions...." 
class="form-control">
</div>

组件

class ViewPermisson extends Component
{
use WithPagination;
public $search;
protected $queryString = ['search'];
protected $listeners = ['refreshPermissions' => '$refresh'];
public function updatingSearch()
{
$this->resetPage();
}
public function render()
{
$permissions = Permission::where('guard_name', 'admin')
->where('name', 'like', '%' . $this->search . '%')
->simplePaginate(10);

return view('livewire.admin.access.view-permisson',
['permissions' => $permissions]);
}
}

问题是,当我加载页面时,Livewire输入会发送带有空查询字符串的请求。我想在页面加载时阻止此请求。

127.0.0.1:8000/admin/permissions?

这是一个URL,当我请求页面时添加了一个空的查询字符串。

问题在于,当您最初呈现页面时,它会返回权限查询。您应该在更新搜索字段的同时查询权限。

public $permissions;

public function updatedSearch()
{
if($this->search == '') return;
$this->permissions = Permission::where('guard_name','admin')->where('name', 'like', '%'.$this->search.'%')->simplePaginate(10);    
}
public function render()
{
return view('livewire.admin.access.view-permisson');
}

或者,您只需通过检查搜索变量是否为空来绕过查询。类似:

public function mount(){
$this->search = '';
}
public function render()
{
if($this->search != ''){
$permissions = Permission::where('guard_name','admin')->where('name', 'like', '%'.$this->search.'%')->simplePaginate(10);
return view('livewire.admin.access.view-permisson',['permissions'=>$permissions]);
}else{
return view('livewire.admin.access.view-permisson',['permissions'=>null]);
}  

}