Folosesc Drupal 9 și views_field_view pentru a încorpora o vizualizare „copil” într-o vizualizare „părinte”. Deoarece există mai multe rânduri în vizualizarea părinte, ajung să fie randați multipli din aceeași vizualizare „copil”. Acest lucru împiedică redarea „paginare” deoarece „id-ul paginii” este același pentru mai multe vizualizări secundare redate.
Pot ocoli această problemă de randare setând programatic id-ul pagerului. Vezi codul de mai jos.
utilizați Drupal\views\ViewExecutable;
function hook_views_pre_view(ViewExecutable $view, $display_id, array &$args) {
if ($view->id() == '<view_id>') {
$unique_id = $view->args[0]; // argument care este un ID unic
$view->pager->options['id'] = $unique_id;
}
}
Folosind codul de mai sus într-un modul, acum apare paginatorul vizualizării copilului. Cu toate acestea, făcând clic pe numerele sau butoanele pagerului, se va actualiza vizualizarea părinte în loc de vizualizarea secundară.
Cum pot schimba paginatorul pentru vizualizarea „copil”, astfel încât să actualizeze vizualizarea copil în locul celui părinte?
Se pare că trebuie să inițialez corect paginatorul sau să modific jquery, astfel încât să actualizeze vizualizarea copil în loc de părintele? Cum aș putea să fac asta?
Iată câteva lucruri pe care le-am căutat, dar până acum nu m-au ajutat:
- Drupal 7 vizualizări remediate - nu se aplică deoarece vederile s-au mutat în nucleu?
- Vizualizările încarcă mai multe probleme, Vizualizările arată mai multe module, Afișează problema derulării infinite
- În modulul views_field_view se pare că încearcă să seteze un id unic pentru paginator înainte de a utiliza următoarele
$view->initPager();
pentru a inițializa paginatorul. Cu toate acestea, depanarea arată că ID-ul care este setat nu este aplicat la $view. S-a schimbat ceva cu initPager? (deși API-ul nu face nicio indicație că are)