ShopRouteDirector.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Name: 芸众商城系统
  5. * Author: 广州市芸众信息科技有限公司
  6. * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
  7. * Date: 2021/8/20
  8. * Time: 14:15
  9. */
  10. namespace app\common\route;
  11. use app\common\route\Contracts\ShopRoute as ShopRouteContracts;
  12. use Illuminate\Support\Str;
  13. class ShopRouteDirector
  14. {
  15. public $route;
  16. public $routes;
  17. public function __construct(ShopRouteContracts $shou_route)
  18. {
  19. $this->route = $shou_route;
  20. $this->routes = request()->input('route');
  21. }
  22. public function setRoute()
  23. {
  24. list($class_name,$action) = $this->match();
  25. request()->setRoute($this->routes);
  26. $routes = app('routes')->getRoutesByMethod();
  27. $current_route = $routes[request()->method()][$this->route->path];
  28. $current_route->action['uses'] = $class_name.'@'.$action;
  29. $current_route->action['controller'] = $class_name.'@'.$action;
  30. $current_route->action['namespace'] = $class_name;
  31. //中间件
  32. $middleware = $this->route->getMiddleware();
  33. $current_route->action['middleware'] = array_merge($current_route->action['middleware'],$middleware);
  34. return true;
  35. }
  36. private function match()
  37. {
  38. $routes = explode('.', $this->routes);
  39. $first = array_shift($routes);
  40. if ($first == 'plugin') {
  41. //插件路由
  42. $route = $this->route->pluginMatch($routes,$first);
  43. } else {
  44. //商城路由
  45. $route = $this->route->shopMatch($routes,$first);
  46. }
  47. list($classname,$action) = $route;
  48. if (empty($action)) {
  49. $action = $action ?: 'index';
  50. $this->routes .= '.index';
  51. }
  52. $action = strpos($action, '-') === false ? $action : Str::camel($action);
  53. return [$classname,$action];
  54. }
  55. }