热门文章
PHP函数介...
如何解决Red...
MySQL数据...
Tomcat 与 N...
Nginx 轻松搞...
Nginx额外篇...
Nginx静态资...
ThinkPHP...
PHP 微服务...
linux-window...

thinkphp6.0路由篇之注解路由和URL生成

有趣的灵魂 2022-10-04 17:41:56

一、注解路由

注解路由需要安装扩展 (安装扩展前先备份tp6文件)

进行扩展安装需要执行命令:

composer require topthink/think-annotation


3.安装好后,使用use引入相关类库


use thinkannotationRoute;


4.然后再控制器设置注解代码即可,可以使用PHPDOC生成一段,然后添加路由规则

5、添加时必须使用双引号,单引号会报错


/**

 * @param $id 

 * * @return string 

 * * @route("details/:id"); 

 * */


6.第二或以上参数,可以设置请求类型,比如要求是GET模式访问


* @route("ds/:id", method="GET"

1

7.更多参数可实现更多功能(不需要考虑顺序),比如 ext、https 等


@route("ds/:id", method="GET", ext="html", https=1) //布尔值 0,1 代替

1

8.注解模式也支持资源路由,先要 use 相关类库,然后声明


use thinkannotationRouteResource; 

/** 

* @Resource("blog") 

* */ 

* class Blog ...


9、注解模式也支持分组,先要use相关类库,然后声明:


use thinkannotationRoute; 

use thinkannotationrouteGroup; 

* @Group("ads")


二、URL生成

1、首先创建一个新的控制器:Url.class,创建一个路由方法和Url生成的方法

2、然后,创建两个路由规则


Route::rule('ds', 'Url/index'); 

Route::rule('ds/:id', 'Url/details');


3、使用 Route::buildUrl(‘地址’, [参数]…)方式来获取路由的 URL 地址


return Route::buildUrl('Url/details', ['id'=>5]);


4、可以给路由取一个别名,在生产URL的时候,直接调用别名


//路由

Route::rule('ds/:id', 'Url/details')->name('u'); 

//控制器端

return Route::buildUrl('u', ['id'=>5]);


5、也可以直接使用路由地址生成 URL,但这个方式并不需要和路由定义相匹配;


return Route::buildUrl('ds/5');


6、默认在配置设置了后缀为.html,所以,生成的 URL 会自动加上;


return Route::buildUrl('ds/5')->suffix('shtml');


7、如果,你想添加完整域名路径,可以再添加 domain 方法


return Route::buildUrl('ds/5')->domain(true); 

return Route::buildUrl('ds/5')->domain('news'); 

return Route::buildUrl('ds/5')->domain('news.abc.com'); 

return Route::buildUrl('ds/5@news.abc.com');

8、也可以直接使用助手函数 url()来代替 Route::buildUrl();

return url('ds/5');



最后修改:2022-10-28 15:07:21