使用action方法,第一个参数为指定路由的 action 名,第二个参数是参数数组,第三个参数决定是否显示根目录(默认为 true)
$route = new Route(['GET'], 'foo/bam', ['controller' => 'foo@bar']); $routes->add($route); // 输出 http://www.foo.com/foo/bam $url->action('foo@bar');
$route = new Route(['GET'], 'foo/invoke', ['controller' => 'InvokableActionStub']); $routes->add($route); // 输出 http://www.foo.com/foo/invoke $url->action('InvokableActionStub');
设置全局默认参数
$url->defaults(['locale' => 'en']); $route = new Route(['GET'], 'foo', ['as' => 'defaults', 'domain' => '{locale}.example.com', function() {}]); // 路由 url 有参数,但没有传参数值,则会找全局默认参数值;输出 http://en.example.com/foo $url->route('defaults');
设置全局命名空间
这样调用的时候,不用在 action 上省略这部分命名空间
// 设置全局命名空间 $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); // 输出 http://www.foo.com/foo/bar; action 的值省略 namespace 这个命名空间 $url->action('foo@bar'); // 输出 http://www.foo.com/foo/invoke; action 的值省略 namespace 这个命名空间 $url->action('InvokableActionStub'); // 配置添加路由 $route = new Route(['GET'], 'something/else', ['controller' => 'something\foo@bar']); $routes->add($route); // 输出 http://www.foo.com/something/else; 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('/'); }
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 路径是包含根目录的,例如(http://xx.com/foo/bar);
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