Я новичок в Yii2, поэтому у меня есть таблица Brands со своими типами ('brand', 'author', 'company')
и их название slug, поэтому мне нужен URL-адрес, подобный этому: www.site.com/{brand_type}/{brand_slug}
без имени контроллера, как это сделать?
Это обычно называют довольно URL. Чтобы добиться этого, в Yii2 поместите это в свой конфигурационный файл приложения под ключ 'components'
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ // ... '<type:\w+>/slug:\w+>' => 'yourcontroller/youraction', // ... ], ],
В результате вы передали URL в указанном вами формате, ваш контроллер будет $type
и $slug
качестве параметров, которые вы можете использовать в своем контроллере, который, как ожидается, примет форму:
class YourcontrollerController extends YourBaseController { ... public function actionYouraction($type, $slug) { // Do whatever you want with these variables } ... }
Обратите внимание, что вам понадобится ваш веб-сервер для настройки выполнения index.php
вашего приложения, даже если он не указан в URL-адресе. Для Apache это можно сделать, например, используя .httaccess (подробнее здесь) :
RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
Окончательное руководство по Yii 2.0 имеет отличный раздел по этой теме