Kreiranje stranice u Drupal modulu programatski
Postoje dva koraka u kreiranju jednostavne stranice u Drupalu:
Definišite putanju i njene parametre.
Ovaj korak uključuje naslov stranice, zahteve za pristup stranici i druge parametre.
U Drupalu 7 morali ste implementirati hook_menu().
U Drupalu 8 kreirajte fajl <module_name>.routing.yml u direktorijumu modula na najvišem nivou.
Napišite kod za vraćanje sadržaja stranice.
U Drupalu 7 morali ste napisati callback funkciju stranice koja je navedena u hook_menu().
U Drupalu 8 callback stranice treba da bude ili metod klase ili registrovani servis. Može se razlikovati u zavisnosti od različitih uslova (HTTP ili HTTPS, Content-Headers itd.), ali to je izvan okvira ovog uvoda.
Prolazak kroz primer
Prateći primer na ovoj stranici, moći ćete da kreirate jednostavnu stranicu u svom prilagođenom modulu, bez potrebe da saznate više o unutrašnjosti Drupala. Za detaljnije informacije pogledajte Change record o promenama u sistemu rutiranja i različitim implementacijama u jezgru i u primerima projekata.
YAML fajl za rutiranje za primer modula
Informacije o rutiranju se čuvaju u example/example.routing.yml:
example.my_page: path: '/mypage/page' defaults: _controller: '\Drupal\example\Controller\ExampleController::myPage' _title: 'My first page in D8' requirements: _permission: 'access content'
example.my_page
- Ovo je mašinsko ime rute. Po konvenciji, mašinska imena ruta treba da budu module_name.sub_name. Kada drugi delovi koda treba da referenciraju rutu, oni će koristiti mašinsko ime.
path
- Ovo definiše putanju do stranice na vašem sajtu. Obratite pažnju na početni kosu crtu (/).
defaults
- Opisuje callback funkciju stranice i naslov. @todo: Gde se ove podrazumevane vrednosti mogu nadjačati?
requirements
- Definiše uslove pod kojima će stranica biti prikazana. Možete navesti dozvole, module koji moraju biti uključeni i druge uslove.
Implementacija stranice za primer modula
Klasa ExampleController treba da bude definisana u example/src/Controller/ExampleController.php:
<?php namespace Drupal\example\Controller; use Drupal\Core\Controller\ControllerBase; /** * Pruža rute odgovore za Example modul. */ class ExampleController extends ControllerBase { /** * Vraća jednostavnu stranicu. * * @return array * Jednostavan renderabilni niz. */ public function myPage() { $element = array( '#markup' => 'Hello, world', ); return $element; } }
namespace (prostor imena)
- Ovde se deklariše prefiks potreban za potpuno kvalifikovano ime klase koju definišemo. Uporedite PHPDoc blok i ime klase. Autoloader zna da da bi pronašao klasu \Drupal\example\Controller\ExampleController, mora da traži fajl modules/example/src/Controller/ExampleController.php.
use
- Omogućava nam da koristimo ControllerBase umesto punog imena klase, čineći definiciju klase čitljivijom.
myPage()
- Metod naveden u YAML fajlu mora biti javni. Treba da vraća renderabilni niz.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.