Open ahegege opened 4 years ago
当多级控制器绑定独立域名时, 目前只能通过绑定到命名空间的方式(如 Route::domain ( 'api.domain.com', ":\app\controller\api" );),很不友好。 同时导致 view() 无法自动获取模板等问题,当然也可以通过设置很多个路由来实现。
为了友好的使用这个功能,建议添加新的路由规则,具体代码实现如下:
路由使用: Route::domain ( 'api.domain.com', '&api' );
修改文件Domain.php [96行] checkUrlBind 方法中的 $bindTo数组添加一项 '&' => 'bindToControllerLayer'
添加bindToControllerLayer方法 /**
@return ControllerDispatch */ protected function bindToControllerLayer(Request $request, string $url, string $layer): ControllerDispatch { $array = explode('|', $url, 3); $controller = !empty($array[0]) ? $array[0] : $this->router->config('default_controller'); $action = !empty($array[1]) ? $array[1] : $this->router->config('default_action'); $param = [];
if (!empty($array[2])) { $this->parseUrlParams($array[2], $param); } return new ControllerDispatch($request, $this, rtrim($layer, '.').'.'.$controller . '/' . $action, $param);
}
当多级控制器绑定独立域名时, 目前只能通过绑定到命名空间的方式(如 Route::domain ( 'api.domain.com', ":\app\controller\api" );),很不友好。 同时导致 view() 无法自动获取模板等问题,当然也可以通过设置很多个路由来实现。
为了友好的使用这个功能,建议添加新的路由规则,具体代码实现如下:
路由使用: Route::domain ( 'api.domain.com', '&api' );
修改文件Domain.php [96行] checkUrlBind 方法中的 $bindTo数组添加一项 '&' => 'bindToControllerLayer'
添加bindToControllerLayer方法 /**
@return ControllerDispatch */ protected function bindToControllerLayer(Request $request, string $url, string $layer): ControllerDispatch { $array = explode('|', $url, 3); $controller = !empty($array[0]) ? $array[0] : $this->router->config('default_controller'); $action = !empty($array[1]) ? $array[1] : $this->router->config('default_action'); $param = [];
}