Створення - красивих - чпу посилань (url) для сайту на yii2 використовуючи свій клас правил для urlmanager

Створення - красивих - чпу посилань (url) для сайту на yii2 використовуючи свій клас правил для urlmanager

Для тих, хто не знає - ЧПУ (аббр. Від «человекопонятний URL», англ. Friendly URL) - URL-шлях, що складається з зрозумілих слів, замість ідентифікаторів, і відображає файлову структуру сайту.

У даній статті я розповім, як зробити "красиві" посилання (або які потрібно) для вашого сайту на yii2 за допомогою створення свого класу правил для компонента Yii2 urlManager. Варто зауважити, що створення класу і окремої таблиці в БД для нього - це досить радикальний підхід і можливо вам досить буде створити кілька полів для "складаючи" і налаштувати правила urlManager як тут.

Наведу кілька прикладів того, що у нас вийде в підсумку:

Тут ми прописуємо кілька правил, при використанні яких yii2 не повинен використовувати базу даних. Їх ми розміщуємо до підключення нашого класу SefRule в маси "rules", щоб при відповідно, програма їх застосовувала не доходячи до виконання наступних рядків. А саме це:

Також в компоненті конфігурації urlManager ми відключаємо висновок точки входу - сторінку index.php, інших службових написів (routes) і забороняємо фреймворку, при невідповідності нашим правилам, самовільно шукати спосіб відкрити запитувану сторінку (прибираємо дублі сторінок).

Створення класу правил ЧПУ.

Як видно з правил urlManager. клас буде розміщуватися в common \ components. Нижче наведу повний код файлу SefRule.php.


Наш клас SefRule успадковує методи від класу Object і реалізує інтерфейс UrlRuleInterface. Він складається з двох основних методів, один з яких createUrl () - виводить з БД URL в тому вигляді в якому нам потрібно, а другий parseRequest () перетворює нашу фантазію в вид стандартний для Yii2. Тобто він шукає URL довільного виду в БД, повертаючи нормальний URL. Всі зазначені методи - стандартні, перейменовувати їх не можна.

У методі createUrl () я вказав контролери (у мене це PostController і SiteController), при виведенні сторінок яких буде додаватися префікс .html. вказує що це статична сторінка.

Створення - красивих - чпу посилань (url) для сайту на yii2 використовуючи свій клас правил для urlmanager

Тепер щодо БАЗИ ДАНИХ.

Для тих, хто використовує yii міграції для роботи з БД, викладаю відповідний код:

Можна створити вручну. А саме - таблицю я назвав sef. в ній тільки 3 поля:

  • id (primaryKey, AUTO_INCREMENT);
  • link (varchar (255));
  • link_sef (varchar (255)).
Заповнена даними таблиця в phpMyAdmin може виглядати так:

Створення - красивих - чпу посилань (url) для сайту на yii2 використовуючи свій клас правил для urlmanager

Після контролера потрібно вказати дію які визначає файл для виводу сторінки. Для записів які беруться з БД, у мене це view. Далі вказується id конкретної записи / рубрики / мітки по якій проводиться вибірка з БД.

Ось і все, тепер ми маємо короткі, зрозумілі URL. Причому сторінки наших постів будуть називатися не 1,2,3 а мати своє URL-назва. Для зручності можна підключити автоматичне завдання URL-аліаса в адмінці сайту при створенні / редагуванні постів та іншого. Але це вже матеріал для іншої статті.

Приймаю замовлення на створення сайтів і WEB-додатків з використанням самих популярних php-фреймворків Yii2 і Laravel-5.