Drupal 8 - tworzenie modułu podstawy
W artykule przedstawię wstęp do tworzenia modułów w Drupalu 8. Stworzymy prosty moduł tworzący drupalową stronę po stronie frontendu. Tworzenie modułów w Drupalu 8 ma parę istotnych zmian w stosunku do Drupala 7. W Drupalu 7 podstawowe moduły są umieszczane w katalogu /modules, a moduły niestandardowe i dodatkowe należy umieścić w katalogu sites/all/modules lub sites/sitename/modules. W Drupalu 8 podstawowe moduły przechodzą do katalogu /core, więc możesz umieścić swoje moduły dodatkowe i niestandardowe w katalogu /modules.
name: My Module description: My first module package: Custom type: module version: 1.0 core: 8.xWięcej o plikach info możesz przeczytać na stronie Drupala. W Drupalu 7 plik .module był obowiązkowy, teraz jest opcjonalny. W katalogu modułów musimy stworzyć podkatalog dla kontrolerów, wtyczek, formularzy, szablonów i testów. Ten podkatalog powinien nazywać się src. Pozwoli to klasie kontrolera na automatyczne ładowanie, co oznacza, że nie musisz jawnie dołączać pliku klasy. Teraz stworzymy pierwszy kontroler. Utwórz folder w src o nazwie Controller. W tym folderze utwórz plik o nazwie FirstController.php. W FirstController.php utworzymy prostą wiadomość "hello world" wyświetloną na drupalowej podstronie.
<?php
/**
* @file
* Contains \Drupal\my_module\Controller\FirstController.
*/
namespace Drupal\my_module\Controller;
use Drupal\Core\Controller\ControllerBase;
class FirstController extends ControllerBase {
public function content() {
return array(
'#type' => 'markup',
'#markup' => t('Hello world'),
);
}
}
Kontroler, który stworzyliśmy powyżej, na tym etapie nic nie zrobi.
Musimy utworzyć routing, aby mógł zostać wykonany. Utwórz plik o nazwie my_module.routing.yml
w głównym katalogu naszego modułu o następującej treści.
my_module.content:
path: '/hello'
defaults:
_controller: 'Drupal\my_module\Controller\FirstController::content'
_title: 'Hello world'
requirements:
_permission: 'access content'
Włącz moduł w panelu administracyjnym.
Jeśli teraz przejdziesz do /hello, zobaczysz komunikat Hello World.
Routing działa i zwraca zawartość z kontrolera.
Ale aby dotrzeć do treści, musisz znać adres URL.
Aby uczynić to bardziej użytecznym, musimy dodać go do systemu menu Drupala. Aby to zrobić, musisz utworzyć plik menu.yml.
Utwórz zatem w głównym katalogu modułu plik my_module.links.menu.yml.
my_module.admin: title: 'My module settings' description: 'A basic module to return hello world' parent: system.admin_config_development route_name: my_module.content weight: 100Wyczyść cache, a następnie powinieneś zobaczyć pozycję menu w konfiguracji -> development. Gratulacje stworzyłeś właśnie pierwszy drupalowy moduł!
