Puncte:1

Cum forțesc paginatorul să se actualizeze?

drapel pl

Am un formular personalizat construit cu API-ul Form. Fluxul general este:

  1. Construiți și afișați formularul
  2. Obțineți informațiile utilizatorului
  3. Reconstruiți și formați
    • interogare bazată pe intrarea utilizatorului cu adăugat

      $interogare = $interogare
        ->extend('Drupal\Core\Database\Query\PagerSelectExtender')
        ->limit($valori['articole']);
      

Toate acestea funcționează bine pentru prima trimitere și pentru paginarea dintre trimiteri, dar când un utilizator introduce o valoare diferită pentru interogare, în timp ce rezultatele căutării se modifică, paginatorul nu se actualizează (afișează același număr de pagini de rezultate ca și în cazul vechii interogare și rămâne pe aceeași pagină a interogării.

Deci, dacă prima interogare (de exemplu, „rață”) a dus la 14 pagini de rezultate și mă aflu pe a 3-a pagină de rezultate de rață, când schimb câmpul de interogare la „pui” și trimit, rezultatele reale arată lucrurile potrivite, dar paginatorul arata totusi 14 pagini in loc de cele 35 pentru pui si ma tine pe a 3-a pagina in loc sa ma duca la prima pagina).

Cum forțesc paginatorul să se actualizeze?

Puncte:2
drapel pl

Mi-am dat seama, sper că asta va ajuta pe altcineva cu o întrebare similară.

În loc să faci o $formstate->setRebuild(); în submitForm metoda, am schimbat-o la

$form_state->setRedirect(
    „sliker_drupal_backend.browser”,
    [],
    [
      'interogare' =>[
        'logic'=>$form_state->getValue('logic'),
        'articole'=>$form_state->getValue('articole'),
        'frază'=>$form_state->getValue('frază'),
        'vizibilitate'=>$form_state->getValue('vizibilitate'),
        'ids'=>$form_state->getValue('ids'),
      ],
    ]);

cel setRedirect() metoda are trei argumente:

  • Numele mașinii de traseu
  • Argumente (pentru a completa „substituenți” în traseul)
  • Opțiuni care sunt orice opțiuni care pot fi transmise la a \Drupal\Core\Url

Prin căutarea codului, opțiunile găsite sunt o matrice asociativă și cheile pot fi oricare dintre:

  • „interogare”: o matrice de perechi cheie/valoare de interogare (fără codificare URL) pentru a le adăuga la adresa URL.
  • „fragment”: un identificator de fragment (numit ancora) de adăugat la adresa URL. Nu includeți primul caracter „#”.
  • „absolut”: implicit este FALSE. Dacă să forțați ieșirea să fie o legătură absolută (începând cu http:). Util pentru link-uri care vor fi afișate în afara site-ului, cum ar fi într-un flux RSS.
  • „atribute”: o matrice asociativă de atribute HTML care va fi adăugată etichetei de ancorare dacă utilizați clasa \Drupal\Core\Link pentru a realiza legătura.
  • „limbaj”: un obiect limbaj opțional folosit pentru a căuta alias pentru adresa URL. Dacă $options['language'] este omis, va fi implicit limba curentă pentru tipul de limbă LanguageInterface::TYPE_URL.
  • „https”: dacă această adresă URL ar trebui să trimită către o locație sigură. Dacă nu este definită, se utilizează schema curentă, astfel încât utilizatorul rămâne pe HTTP sau respectiv HTTPS. TRUE impune HTTPS și FALSE impune HTTP.

Apoi mi-am actualizat logica în compilarea formularului pentru a căuta parametrii de interogare și pentru a utiliza acele informații dacă sunt prezente.

Vedea https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Form!FormState.php/function/FormState%3A%3AsetRedirect/8.9.x pentru mai multe informații despre setRedirect().

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.