// 设置全局命名空间 $url->setRootControllerNamespace('namespace'); // 配置添加路由 $route = new Route(['GET'], 'foo/bar', ['controller' => 'namespace\foo@bar']); $routes->add($route); $route = new Route(['GET'], 'foo/invoke', ['controller' => 'namespace\InvokableActionStub']); $routes->add($route); // 输出 ; action 的值省略 namespace 这个命名空间 $url->action('foo@bar'); // 输出 ; action 的值省略 namespace 这个命名空间 $url->action('InvokableActionStub'); // 配置添加路由 $route = new Route(['GET'], 'something/else', ['controller' => 'something\foo@bar']); $routes->add($route); // 输出 ; action 的最前面加了 `\`,全局命名空间下调用 $url->action('\something\foo@bar');
跳转器
跳转器内部提供了以下跳转;
home
通过调用app('redirect')->home()会跳转至根目录下\;
public function home($status = 302)
back
通过调用app('redirect')->back()会跳转至上一次访问页面;或者全局帮助函数back()也可以;
public function back($status = 302, $headers = [], $fallback = false)
第三个参数表示,如果没有前一次访问请求,访问哪个页面,具体源码如下:
if ($url) { return $url; } elseif ($fallback) { return $this->to($fallback); } else { return $this->to('https://www.jb51.net/'); }
refresh
通过调用app('redirect')->refresh()会刷新当前访问页面;
public function refresh($status = 302, $headers = [])
to
通过调用app('redirect')->to('path')会跳转至指定路径页面;或者全局帮助函数redirect('path')也可以;
这里的 path 路径是不包含根目录的,例如(foo/bar);
public function to($path, $status = 302, $headers = [], $secure = null)
第四个参数表示是否使用https;
away
通过调用app('redirect')->away('path')会跳转至指定路径页面;
这里的 path 路径是包含根目录的,例如();
public function away($path, $status = 302, $headers = [])
secure
通过调用app('redirect')->secure('path')会跳转至指定路径页面;这里的path路径是不包含根目录的;
public function secure($path, $status = 302, $headers = [])
其本质是调用了to方法
return $this->to($path, $status, $headers, true);
route
通过调用app('redirect')->route('route_as_name') ,根据路由的as名会跳转至与路由一致的url路径页;
public function route($route, $parameters = [], $status = 302, $headers = [])
action
通过调用app('redirect')->action('route_action') ,根据路由的action名会跳转至与路由一致的url路径页;
public function action($action, $parameters = [], $status = 302, $headers = [])
guest
跳到指定的路径页的同时,将当前url存放至session中,键名为url.intended;
public function guest($path, $status = 302, $headers = [], $secure = null)
intended
跳转至session中键名为url.intended的值所对应的Url;如果不存在,则跳转至第一个参数所传的值;
public function intended($default = 'https://www.jb51.net/', $status = 302, $headers = [], $secure = null)
响应工厂(ResponseFactory)
ResponseFactory文件提供了两部分 API,分别是与响应类型相关和与跳转相关;
响应
response()会返回ResponseFactory实例;
视图响应
response()->view('hello', $data, 200);
Jsop响应
response()->json(['name' => 'Abigail', 'state' => 'CA']);
Jsonp响应
response()->json(['name' => 'Abigail', 'state' => 'CA'])->withCallback($request->input('callback'));
文件响应
直接在浏览器显示文件,而不是下载,例如图片或PDF;file方法第一参数为文件路径,第二参数选填为头信息数组;
response()->file($pathToFile, $headers);
文件下载
download方法第一参数为文件路径,第二参数选填为文件名,第三参数选填为头信息数组;
return response()->download($pathToFile, $name, $headers);
跳转
这里的跳转方法,其实调用的还是跳转器中的方法,不过是在暴露更多的接口,方便调用与使用;