Запретить отправку запроса текстового поля при загрузке страницы в 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-адрес с пустой строкой запроса, добавленной, когда я запрашиваю страницу.


person Shahrukh    schedule 12.01.2021    source источник


Ответы (1)


Проблема заключается в том, что при первоначальной визуализации страницы она возвращается с запросом разрешения. Вы должны запросить разрешение, пока поле поиска обновляется.

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]);
    }  
    
}
person Azahar Alam    schedule 12.01.2021