- Gli elenchi tengono ricerca, filtri e ordinamento nell'indirizzo (#[Url]); la pagina c'era già. - I link verso schede e operazioni (data-ritorno) portano ?da= con la pagina di partenza, o il da già ricevuto: si risale all'origine (elenco -> scheda -> Rientra -> elenco filtrato). - Ritorno::valida accetta solo percorsi interni: niente rimandi esterni. - Trait RicordaRitorno: redirect dopo il salvataggio, Annulla e "Torna indietro" usano la pagina di partenza. Senza da, tutto come prima. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 lines
1.0 KiB
PHP
34 lines
1.0 KiB
PHP
<?php
|
|
|
|
namespace App\Livewire\Concerns;
|
|
|
|
use App\Support\Ritorno;
|
|
use Livewire\Attributes\Locked;
|
|
|
|
/**
|
|
* Per le pagine che si aprono da un'altra (schede e operazioni): ricorda da
|
|
* dove si è partiti (?da=…, vedi App\Support\Ritorno) e ci torna dopo la
|
|
* conferma. Annulla e "Torna…" nella vista usano $ritorno allo stesso modo.
|
|
*
|
|
* Aperta senza `da` (menu laterale, link salvato) la pagina si comporta come
|
|
* prima: ogni componente passa la sua destinazione predefinita.
|
|
*/
|
|
trait RicordaRitorno
|
|
{
|
|
/** URL della pagina di partenza; null se aperta direttamente. */
|
|
#[Locked]
|
|
public ?string $ritorno = null;
|
|
|
|
/** Hook di Livewire: gira al mount di ogni componente che usa il trait. */
|
|
public function mountRicordaRitorno(): void
|
|
{
|
|
$this->ritorno = Ritorno::daRichiesta();
|
|
}
|
|
|
|
/** Dove andare dopo la conferma: la pagina di partenza, o quella predefinita. */
|
|
protected function destinazione(string $predefinita): string
|
|
{
|
|
return $this->ritorno ?? $predefinita;
|
|
}
|
|
}
|