UrlManager и UrlRule: Беседа о маршрутизации в Yii2
Возникла идея с разрешения собеседника записать и выложить небольшую спонтанную консультацию. Первый блин записи со скайпа вышел комом: голоса друг на друга накладываются и по громкости разные. Кто осилит досмотреть до конца, тот герой :)
Рассказываю немного о маршрутизации, устройстве компонента UrlManager, показываю примеры написания правил в дополнение к предыдущим статьям. Следующий раз надо звуки с динамика и с микрофона отдельно записывать и вручную сводить:
YouTube пережал до высоты 720. Печаль-беда. В оригинальном разрешении можно взять здесь.
Ну и, как обычно, подписывайтесь на канал, на рассылку блога здесь в сайдбаре, высказывайте критику, давайте советы и предлагайте идеи в комментах здесь или там. И поделитесь в комментах программкой или советами для записи скринкастов в Ubuntu, чтобы в скайпе голос с динамиков от голоса с микрофона не отставал. Заранее спасибо!
Aleksey SamohvalovНа будущее - в видеозаписях (по возможности конечно) очень критично сократить длительность видео. Перемотал на 20 минуту - вы там еще просто ссылки в вебе обсуждаете...
Александр ШиллингНасколько я знаю правильно говорить "Йи" (Yii), а не "Юии" :)
Видео в целом понравилось, правда госяк со звуком и низкая громкость твоего микрофона (Дмитрий) немного сбивает общую атмосферу :) ... и два часа это жесть :) мне кажется лучше сделать вырезку, где самое интересно, а всё остальное в видео архив - время деньги :)
SSDDСпасибо за видео, побольше уверенности и вперед !!!
СергейRecordMyDesktop не пробовали?
Я её недавно себе ставил, чтоб просто снять один "немой" скринкаст. Был удивлён, когда оказалось что все звуки в комнате, в момент записи скринкаста, даже шорохи, отлично записались (ноутбучный, встроенный микрофон).
По крайней мере попробовать стоит :)
Евгений – atlant5.comОтличное объяснение!
Побольше бы таких пояснений конкретных возможностей Yii2
Тимур – www.crimeatrips.comЗдравствуйте, Дмитрий. Нужен ваш совет по поводу написания правил для UrlManager. Имею модуль "menu", в котором 2 контроллера: "default" и "items". Сейчас маршрутизатор настроен так:
Проблема появилась в генерации url для "items" контроллера, т.е в результате нужно генерировать по такому шаблону:
но так, чтобы оно не затронуло и других модулей, которым такая маршрутизация не нужна.
Как это лучше сделать и как должны выглядеть правила маршрутизатора? Может \yii\web\GroupUrlRule?
Дмитрий ЕлисеевСоздайте вначале правило только для items:
ВячеславА как можно попасть к вам на консультацию такую же? :)
Дмитрий ЕлисеевОбратиться в обратную связь или на почту.
OlexanderА как лучше создать универсальное правило?
Если есть парное к-во параметров и больше-ровно 4, то первые два - это стандартно controller/action, а остальные пары - это ключ значение в масиве $_GET
Например
Спасибо!
Дмитрий ЕлисеевРаньше это делалось указанием звёздочки в конце. В любом случае, всё можно сделать через свой класс типа UrlRuleInterface.
Andrewkha – sportforecast.netДмитрий, добрый день!
Прошу Вашей помощи. Решил перейти на хостинг (сейчас все на домашнем NAS, жутко тормозит). Проблема - хостер не предоставляет доступ для настройки вируальных хостов, соответственно, во все URL добавляется /web
Положил в корень сайта вот такой .htaccess
RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^cv63241\.tmweb\.ru$ RewriteCond %{REQUEST_URI} !/web/ RewriteRule ^(.*)$ /web/$1 [L]главная страница теперь доступна через нормальный URL, но ко всем ссылкам все равно дописывается web. Есть подозрение, что это можно решить с помощью правил URL-менеджера. Добавил самым первым правило
но это не помогло. помогите, пожалуйста
Дмитрий Елисеев'request' => [ 'baseUrl' => '', ... ];
Andrewkha – sportforecast.netОгромное спасибо за быстрый ответ! Все работает
Назар МиронДобрый день Дмитрий!
Мне нужна ваша помощь.
В yii2 cong записано так
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ '<controller:\w+>/<action:(\w|-)+>' => '<controller>/<action>', '<slug:[a-zA-Z0-9=_\-]+>' => '/site/page', ], ],Мне нужно чтобы слаг разбирал символ "?" в запросе /?p=Codex
Как это сделать?
Дмитрий ЕлисеевТолько через написание своего класса-правила.
Назар МиронСпасибо за помощь Дмитрий, теперь знаю куда двигаться.