为何打不开中国建设银行网站,校园二手市场网站开发,顺德网站优化,安康养老院收费ThinkPHP02#xff1a;路由一、路由定义二、变量规则三、路由地址四、路由参数五、路由分组六、MISS七、资源路由八、注解路由九、URL生成一、路由定义 路由默认开启#xff0c;在 config/app.php 中可以关闭路由。 路由配置在 config/route.php 中#xff0c;路由定义在 r…
ThinkPHP02路由一、路由定义二、变量规则三、路由地址四、路由参数五、路由分组六、MISS七、资源路由八、注解路由九、URL生成一、路由定义 路由默认开启在 config/app.php 中可以关闭路由。 路由配置在 config/route.php 中路由定义在 route/app.php 中。 rule()默认请求是any。 Route::rule(details/:id, Address/details, GET|POST);其他的有 get、post等。 Route::get(details/:id, Address/details);二、变量规则 系统默认路由变量规则是 \w即字母、数字、中文和下划线在 config/route.php 中可更改。 在路由中设置变量规则。 Route::get(details/:id, Address/details)-pattern([id \d]);动态组合拼装地址和参数都是动态的。 Route::get(hello-name-id, Hello:name/details)-pattern([id \d]);闭包路由可以通过URL直接执行而不需要控制器和方法也支持传递参数和动态规则。 Route::get(think/:name, function ($name) {return hello, .$name.!;
});三、路由地址 路由地址一般为控制器/操作方法。 多级控制器路由。 Route::rule(blog/:id, group.Blog/details);完整路径 Route::rule(ds/:id, \app\controller\Addressdetails);路由重定向 Route::redirect(ds/:id, http://localhost:8000, 302);四、路由参数 设置路由时可以设置相关的方法实施匹配检测和行为执行。 ext() 方法用于检测URL后缀、强制所有URL后缀denyExt() 禁止使用后缀。 Route::get(details/:id, Address/details)-ext(html|shtml);https() 方法用于检测是否为 https 协议。 Route::get(details/:id, Address/details)-https();domain() 方法检测当前域名是否匹配完整域名和子域名均可。 Route::get(details/:id, Address/details)-domain(localhost);ajax/pjax/json 用于检测当前的页面是否是以上请求方式。 Route::get(details/:id, Address/details)-ajax();filter() 用于检测额外参数额外参数可以表单提交。 Route::get(details/:id, Address/details)-filter([id 5, type 1]);append() 方法用于追加额外参数。 Route::get(details/:id, Address/details)-append([status 1]);allowCrossDomain() 方法可以解决跨域请求。 oute::get(details/:id, Address/details)-allowCrossDomain([Access-Control-Allow-Origin *
]);option() 用于配置多个参数 Route::get(details/:id, Address/details)-option([ext html,https true
]);五、路由分组 路由分组可以将相同前缀的路由合并分组简化路由定义。 Route::group(address, function () {Route::rule(ds/:id, /details);Route::rule(rd/:id, /read);
})-prefix(Address);路由规则定义的文件加载时会解析消耗较多资源可以在 config/route.php 中开启延迟解析在匹配的时候才会注册解析。 url_lazy_route true,六、MISS MISS在匹配不到相应规则时会自动跳转到 MISS。 全局MISS。 # app/controller/Error.php
public function miss() {return 404 Not Found;
}# route/app.php
Route::miss(public/miss);分组MISS # app/controller/Address.php
public function miss() {return 404 Address;
}# route/app.php
Route::group(address, function () {Route::rule(ds/:id, /details);Route::rule(rd/:id, /read);Route::miss(miss);
})-prefix(Address);七、资源路由 系统提供了快速生成资源控制器的命令。 php think make:controller Blog注册资源路由注册成功后会自动提供CURD方法无需手动注册请求方式有GET、POST、PUT、DELETE。 Route::resource(blog, Blog);# 自动注册
http://localhost:8000/blog/ (index)
http://localhost:8000/blog/5 (read)
http://localhost:8000/blog/5/edit (edit)默认参数采用id名称。也可以自定义 # route/app.php
Route::resource(blog, Blog)-vars([blog blog_id]);# app/controller/Blog.php
public function read($blog_id)
{return 显示指定的资源: . $blog_id;
}only() 用于限定资源方法except() 用于排除系统提供的资源方法。 Route::resource(blog, Blog)-only([index, read]);
Route::resource(blog, Blog)-except([delete, update]);rest() 更改系统给予的默认方法放在resource方法前面。资源路由的标识不可更改但生成的路由规则和对应操作方法可以修改。 # rest方法要放在resource前面
Route::rest([# 资源路由标识 请求方式请求地址操作方法save [POST, /:id/save, save],update [PUT, /:id, update],
]);
Route::resource(blog, Blog);使用资源嵌套路由可以让上级资源对下级资源进行操作。 # app/controller/Comment.php
class Comment {public function read($id, $blog_id) {return 评论ID . $id . 博客ID . $blog_id;}public function edit($id, $blog_id) {return 评论ID . $id . 博客ID . $blog_id;}
}# route/app.php 注册资源嵌套路由
Route::resource(blog.comment, Comment);# 路由规则
http://localhost:8000/blog/:blog_id/comment/:id八、注解路由 注解路由是在注解中写的路由项目很简单时使用。 路由注解方式并非系统默认支持而是可选方案需要额外安装扩展。 composer require topthink/think-annotation在控制器中写路由必须使用双引号。单引号不能解析 # app/controller/Address.php
use think\annotation\Route;class Address {/*** param $id* return string* route(ds/:id, methodGET, https1);*/public function details($id) {return 详情id . $id;}
}注解模式也支持资源路由和分组。 use think\annotation\Route\Resource;/*** Class Blog* package app\controller* Resource(blog);*/
class Blog {...
}九、URL生成 使用 buildUrl() 获取路由的URL地址。默认后缀是html可以使用suffix() 更改。使用 domain() 可以生成加上域名的URL。 Route::buildUrl(Url/details, [id 8])-suffix(shtml)-domain(true);可以给路由定义一个别名生成URL时使用别名调用。 可以直接使用路由地址生成URL。 助手函数 url() 可以直接代替 Route::buildUrl() url(ds/5)-domain(true);