Zachowanie sluggable – automatyczne generowanie sluga

Slug występuje w adresie Url po nazwie domeny w formie pojedynczej frazy (np: /kontakt) lub kilku, oddzielonych znakiem myślnika „-” (np: /to-jest-przyklad-sluga). Separator można zmienić na inny, aczkolwiek Google preferuje taką postać. Ta forma linków nosi nazwę przyjaznych adresów Url (Friendly URL). Są one jednym z kluczowych czynników wpływających na pozycjonowanie stron internetowych w wyszukiwarkach.

Symfony korzysta z biblioteki ORM (Mapowanie Obiektowo-Relacyjne), która ma do zaoferowania sporo możliwości. Na przykład umożliwia wykonywanie automatycznych operacji na bazie danych tzw. zachowań (ang. behaviours). W tym rozdziale zajmiemy się jednym z nich, czyli zachowaniem sluggable – generowaniem sluga do podstrony.

Aby można było korzystać z zachowań musimy wpierw zainstalować pakiet StofDoctrineExtensionsBundle :

a następnie dopisać go do pliku bundles.php (/config/bundles.php):

Utwórz plik konfiguracyjny stof_doctrine_extensions.yaml (/config/packages/stof_doctrine_extensions.yaml) i wklej do niego zawartość:

Jak widać, w pliku tym można m.in. włączyć (true) lub wyłączyć (false) zachowanie sluggable.

Na koniec, musimy jeszcze w klasie entity wskazać pole, dla którego slug będzie generowany i zapisywany w bazie. Zazwyczaj slug jest tworzony z tytułu podstrony, posta, artykułu itd. W naszym przykładzie będzie podobnie 😉

Stwórz klasę np: Page.php (/src/Entity/Page.php).
[Uwaga! Poniższy kod jest okrojony do minimum, tak aby ująć samo sedno.]

Jak widać slug jest pobierany z pola o nazwie title : @Gedmo\Slug(fields={„title”}). Oprócz tego, dla kolumny ze slugiem można ustawić dodatkowy parametr: unique=true, tak, że nie może się on powtórzyć, czyli musi być unikatowy dla całej tabeli. Gdyby zdarzył się jednak wyjątek, to do nowego sluga zostanie dopisana cyfra 1, np: slug-1.

I to wszystko 🙂 Do następnego! –>
 

wydrukuj temat