Query String - datos por la url
show-posts Para mostrar una cantidad por pagina, podemos hacer que el usuario escoja de una lista de opciones, para hacer esto añadir este código en resources/views/livewire/show-posts.blade.php:
{{-- Escoger cuantas paginas deseamos ver --}}
<div class="flex items-center">
<span>Mostrar</span>
<select wire:model="cant" class="mx-2 form-control">
<option value="5">5</option>
<option value="10">10</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
<span>entradas</span>
</div>
ShowPosts Y sincronizar con la propiedad $cant en app/Http/Livewire/ShowPosts.php:
public $cant = '10';
public function render()
{
// $posts = Post::all();
$posts = Post::where('title', 'like', '%' . $this->search . '%')
->orWhere('content', 'like', '%' . $this->search . '%')
->orderBy($this->sort, $this->direction)
->paginate($this->cant);
return view('livewire.show-posts', compact('posts'));
}
ShowPosts Para poder pasar el parámetro de la cantidad por la url hacemos, a esto es lo que se le llama Query String:
public $search = '';
public $post, $image, $identificador;
public $sort = 'id';
public $direction = 'desc';
public $open_edit = false;
public $cant='10';
// Que info queremos que viaje por la url, 'except' nos ayuda a no colocar ciertos valores en la url
protected $queryString = [
'cant' => ['except' => '10'],
'sort' => ['except' => 'id'],
'direction' => ['except' => 'desc'],
'search' => ['except' => '']
];
La razón por la cual convertimos en una cadena a $cant, fue para no tener problemas cuando veníamos de escoger otra cantidad y regresábamos a 10, seguíamos viendo el 10 en los parámetros de la url, y esto era porque la url nos regresaba una cadena en vez de un dato numérico. Al hacerlo cadena resolvimos el problema! No afecto a wire:model=“cant” ni en ->paginate($this->cant) ya que es lo suficientemente inteligente para saber que estamos hablando de un valor. Listo!