Для реализации ЧПУ (человеко-понятных унифицированных адресов) для карточки товара в Yii, вам понадобится выполнить несколько шагов.
Шаг 1: Настройка маршрутов в конфигурации приложения
Сначала вам нужно настроить маршруты в файле конфигурации вашего приложения (config/web.php
для Yii2, protected/config/main.php
для Yii1).
Для Yii2:
'components' => [ //... 'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ 'product/<slug:[w-]+>' => 'product/view', ], ], ],
Для Yii1:
'components' => [ //... 'urlManager' => [ 'urlFormat' => 'path', 'rules' => [ 'product/<slug:[w-]+>' => 'product/view', ], ], ],
Это настроит маршрут product/<slug>
для действия view
в контроллере ProductController
, где slug
- это часть ЧПУ адреса, которую вам нужно получить и передать в метод actionView
.
Шаг 2: В контроллере принимайте часть ЧПУ адреса
В вашем контроллере (ProductController.php
) вы должны настроить метод actionView
, чтобы он принимал параметр slug
из ЧПУ адреса. Например, это может выглядеть так в Yii2:
public function actionView($slug) { // Здесь ваш код для отображения карточки товара }
Шаг 3: Получение данных товара и отображение
В методе actionView
вы можете получить данные товара из базы данных или откуда-то еще, используя $slug
, указанный в параметрах метода. Затем вы можете отобразить эти данные в вашем представлении (view) с помощью самых разных способов в зависимости от вашей реализации, например, с применением ActiveRecord или просто запроса к базе данных.
Что касается представления, вы можете создать свое представление view.php
в каталоге представлений для ProductController
, где вы можете использовать данные товара, полученные из базы данных, и отобразить их на странице карточки товара.
Шаг 4: Генерация ЧПУ адреса
Если вы хотите, чтобы ссылки на карточки товаров были генерируемыми (например, в списке товаров), вы должны сгенерировать ЧПУ адрес на основе параметров товара (например, названия товара или уникального идентификатора) и использовать его в ссылке.
Это можно сделать с помощью встроенного в Yii функционала URL-менеджера. В примере ниже предполагается, что у вас есть модель Product
с атрибутами id
и name
:
use yiihelpersUrl; // Генерация ссылки с ЧПУ адресом товара $product = Product::findOne($id); $url = Url::to(['product/view', 'slug' => $product->name], true);
Затем вы можете использовать переменную $url
в HTML-шаблоне для отображения ссылки на карточку товара:
<a href="<?= $url ?>">Название товара</a>
Это основные шаги, которые нужно выполнить для реализации ЧПУ для карточки товара в Yii.