Režimi prikaza: režimi pregleda i forme
Režimi prikaza
Postoje režimi prikaza (dostupni na admin/Structure/Display-Mode) koji omogućavaju različite prikaze entiteta sadržaja za pregled ili uređivanje. Dva tipa režima prikaza su „režimi pregleda“ i „režimi formi“. Obe ove vrste režima prikaza — režimi pregleda i režimi formi — primeri su „konfiguracionih entiteta“. Evo primera eksportovanog režima pregleda.
uuid: 15dc7aa9-13fd-4412-9c06-06d09f915d08 langcode: en status: false dependencies: module: - node id: node.full label: 'Full content' targetEntityType: node cache: true
izvor: core.entity_view_mode.node.full.yml
Glavna osobina na koju treba obratiti pažnju je targetEntityType. Svaki režim prikaza (bilo pregled ili forma) povezan je sa jednim i samo jednim tipom entiteta sadržaja. Po konvenciji postoje oznake koje se koriste za više režima prikaza. Na primer, standardni Drupal Core profil koristi reč „Full“ u oznakama režima pregleda za tipove entiteta čvora, prilagođenih blokova i komentara.
Režimi pregleda i prikaza
- Administriraju se zajednički na adresi: /admin/structure/display-mode/view
- Omogućeni su za svaki bundle u odeljku „Prilagođene postavke prikaza“ na URL-ovima poput: /admin/structure/types/manage/page/display (gde je „page“ bundle čvora)
- Podešavaju se za režim pregleda za svaki bundle na URL-ovima poput: /admin/structure/types/manage/page/display/teaser (gde je „page“ bundle čvora, a „teaser“ režim pregleda)
Režimi pregleda su koncept koji je postojao pre Drupala 8. Oni su postojao u Drupalu 7. U Drupalu 6 postojao je koncept „režima sastavljanja“. Režimi pregleda omogućavaju alatima za kreiranje sajtova kao što je Entity Reference da zatraže određeni entitet na određeni način. Na primer, pretpostavimo da su „song“ i „artist“ tipovi čvora, i da pesma sadrži referentno polje na izvođača. „Full“ prikaz čvora pesme može zahtevati prikaz „teaser“ režima čvora izvođača. U ovom primeru, „teaser“ je režim pregleda koji koristi izvođač, dok „full“ koristi pesma.
Uobičajeno je da ako developer sajta želi da prikaže čvor izvođača u režimu pregleda teaser, tada će konfiguracija biti specifična za izvođača i teaser režim. To se može uraditi preko taba „Manage Display“ na stranici konfiguracije bundle-a entiteta. Primer ove stranice u standardnoj Drupal Core instalaciji je /admin/structure/types/manage/article/display
Na ovoj stranici developer sajta može omogućiti prilagođene postavke prikaza polja za bundle (redosled polja i korišćenje field formattera) za svaki režim pregleda. Nije obavezno da svi režimi pregleda imaju specijalne postavke za sve bundle-ove. U ovom primeru, samo režimi pregleda „RSS“ i „Teaser“ imaju svoje postavke, dok ostali koriste podrazumevane. Veza između tipa entiteta i režima pregleda naziva se prikazom prikaza. @see EntityViewDisplayInterface
Režimi formi i (forma) operacije
- Administriraju se zajednički na adresi: /admin/structure/display-mode/form
- Omogućeni su za svaki bundle na URL-ovima poput: /admin/structure/types/manage/page/form-display (gde je „page“ bundle čvora)
- Podešavaju se za režim forme za bundle na URL-ovima poput: /admin/structure/types/manage/page/form-display/simple (gde je „page“ bundle čvora, a „simple“ režim forme)
Baš kao i režimi pregleda, režimi formi omogućavaju kreiranje različitih konfiguracija polja sa istim bundle-om entiteta sadržaja. Režimi formi dopuštaju više skupova rasporeda i podešavanja field vidžeta, kao što režimi pregleda dopuštaju različite rasporede i podešavanja formattera polja.
U Drupalu 7 postojala su polja i vidžeti polja na tabu „Manage Fields“ za svaki tip sadržaja. Sada je to podeljeno na dva taba: „Manage Fields“ i „Manage Form Display“. Ovo nam daje veću fleksibilnost u tome kako će izgledati forma za dodavanje/izmenu sadržaja. Tab „Manage Display“ ostaje isti kao u Drupalu 7. Pored tipova sadržaja, režimima pregleda možemo upravljati i za druge tipove entiteta poput korisnika, taksonomije, komentara i prilagođenih blokova.
Pored režima formi, operacije sa formama omogućavaju definisanje klasa koje se koriste za forme kao što je forma za brisanje čvora. Klasa koja se koristi za brisanje čvora je različita od one koja se koristi za uređivanje čvora. Operacije su definisane u anotacijama entiteta.
Evo primera koji prikazuje dve prilagođene forme za operacije, kao i „default“ režim forme, sve unutar iste forme MyEntityForm. Vodite računa da forma proširuje ContentEntityForm.
/** * @ContentEntityType( * id = "myentity", * handlers = { * "form" = { * "default" = "Drupal\myentity\Form\MyEntityForm", * "add" = "Drupal\myentity\Form\MyEntityForm", * "edit" = "Drupal\myentity\Form\MyEntityForm", * "delete" = "Drupal\myentity\Form\MyEntityDeleteForm", * }, * }, * ) */
Ako treba da dodate ili izmenite dostupne operacije formi kod postojećih entiteta, možete koristiti hook_entity_type_build i hook_entity_type_alter.
Trenutno je neophodno eksplicitno definisati operaciju za korišćeni režim forme. Za razliku od režima pregleda (koji koriste podrazumevani prikaz ako nema podešavanja za dati režim), režimi formi ne koriste podrazumevanu operaciju ako nije eksplicitno postavljena. Ovo se smatra greškom. Pogledajte #2511720: Omogućiti režimima formi da koriste podrazumevanu operaciju ako nije eksplicitno definisana.
Da biste prikazali formu u režimu prilagođene forme, koristite _entity_form u svom ruti. Na primer, da prikažete prilagođenu „edit“ formu MyEntity, koristite sledeću rutu:
entity.myentity.edit_form: path: '/myentity/{myentity}/edit' defaults: _entity_form: myentity.edit _title: 'Izmeni MyEntity' requirements: _permission: 'edit myentity entities'
Drugi primer:
Česta potreba je da forme za registraciju korisnika ne prikazuju sva prilagođena polja. Nakon registracije, korisnik dobija pristup formi za izmenu profila gde postoje dodatna polja. Evo primera takve konfiguracije:
- Kliknite Dodaj polje na /admin/config/people/account/fields
- Na sledećem ekranu izaberite tip polja: Lista (tekst)
- Označite ga kao: „Lista pretplate“
- Kliknite „Sačuvaj i nastavi“
- Popunite listu dozvoljenih vrednosti, na primer:
1 | Vesti
2 | Važne objave
3 | Ponude, popusti, akcije
4 | Partnerske poruke
- Kliknite Sačuvaj
- Označite polje kao obavezno
- Izaberite svih četiri elementa podrazumevano, kliknite Sačuvaj.
- Zatim kliknite na tab „Manage Form Display“
- Na dnu liste polja nalazi se sekcija „Prilagođene postavke prikaza“, razvijte je.
- U polju „Koristi prilagođene postavke prikaza za sledeće režime formi“ omogućite „Registracija“ i kliknite Sačuvaj.
- Sada ćete imati drugi tab pod nazivom „Registracija“.
- Onemogućite polje „Lista pretplate“ prevlačenjem u sekciju „Onemogućeno“. Kliknite Sačuvaj.
- Pređite na tab „Manage Display“ da proverite da li je polje „Lista pretplate“ omogućeno.
Izlogujte se i posetite stranicu registracije. Polje „Lista pretplate“ neće biti vidljivo.
Nakon prijave polje „Lista pretplate“ će biti dostupno u formi za ažuriranje profila.