Мы создали CMS, используя Laravel 5.6.Мы создали различные динамические маршруты, как показано ниже:
route::get('taxonomy/{taxonomy?}', 'TaxonomyController@list')->middleware('auth');
С помощью этого единственного маршрута мы можем получить доступ к неограниченному количеству зарегистрированных таксономий, например:
http://example.com/taxonomy/category
http://example.com/taxonomy/tag
...
Итак, параметр таксономии - это переменная вещьв наших маршрутах.
Теперь мы создали промежуточное программное обеспечение, чтобы разрешать пользователям в соответствии с предоставленными им разрешениями.С нашим промежуточным программным обеспечением предыдущий маршрут был бы:
route::get('taxonomy/{taxonomy?}', 'TaxonomyController@list')->middleware('auth', 'permissions:manage_{taxonomy?}');
И вот в чем проблема.Мы не можем получить этот переменный параметр в параметр промежуточного программного обеспечения.Нам это нужно, потому что пользователи могут иметь разрешение на category
, но могут иметь разрешение на tag
.Но с этим маршрутом пользователь не может получить доступ ни к одной из таксономий.Весь маршрут заблокирован.
O, мы пробовали и с двойными кавычками:
route::get('taxonomy/{taxonomy?}', 'TaxonomyController@list')->middleware('auth', "permissions:manage_{taxonomy?}");
Есть ли способ передать динамические переменные маршрута в промежуточное ПО?