跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

LaravelURL怎么生成_URL辅助函数用法【教程】

route()、url()、secure_url() 三函数足矣:route()需命名路由且参数键名严格匹配占位符;url()依环境协议,secure_url()强制HTTPS;重定向推荐redirect()->route()以保兼容。 别拼字符串,用
route()
、
url()
、
secure_url()
三个函数就够了,其他都是绕路。 route() 必须配命名路由,否则直接报错 它不认 URI 路径,只认你写在
->name('xxx')
里的名字。没命名就调用
route('xxx')
,会抛出
InvalidArgumentException: Route [xxx] not defined
。 路由定义必须带
->name()
:比如
Route::get('/user/{id}', [UserController::class, 'show'])->name('user.show');
传参键名必须和 URI 占位符完全一致:
route('user.show', ['id' => 123])
合法;
['user_id' => 123]
或
[123]
都会报
Missing required parameters
可选参数(如
{slug?}
)可以不传,传了也得用对应键名:
route('post.show', ['id' => 5, 'slug' => 'hello'])
→
/post/5/hello
;
['id' => 5]
→
/post/5
查询参数(
?q=xxx
)不能塞进
route()
数组里——它只管路径部分。要加 query,得手动拼:
route('post.edit', ['id' => 5]) . '?from=modal'
,注意中文或特殊字符需
urlencode()
url() 和 secure_url() 的区别不是“有没有 HTTPS”,而是“听不听话”
url()
看当前请求协议或
APP_URL
配置;
secure_url()
根本不看,硬切 HTTPS。 Laravel 13.2.0 PHP中文网提供Laravel 13.2.0版本下载,Laravel框架 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。 下载
url('css/app.css')
在
http://localhost
下生成
http://localhost/css/app.css
;在生产 HTTPS 环境下生成
https://yoursite.com/css/app.css
secure_url('css/app.css')
永远是
https://yoursite.com/css/app.css
,哪怕你在本地
http://localhost
开发也强制加
https://
两者都不校验路由是否存在,也不支持参数绑定——所以别拿它生成
/post/{id}
这类动态地址,纯静态路径或资源链接才用 反向代理后
url()
可能出错(比如显示
http
却实际走
https
),这时要在
AppServiceProvider::boot()
里加:
app('url')->forceRootUrl(env('APP_URL'));
重定向时别混用 redirect()->route() 和 to_route() 二者底层完全一样,
to_route()
是 Laravel 9.25+ 才有的语法糖,仅限新项目或确认版本 ≥ 9.25 时可用。
return redirect()->route('posts.index', ['category' => 'news']);
兼容所有 Laravel 7+
return to_route('posts.index', ['category' => 'news']);
更短,但低版本会报
Function to_route not found
闪存数据统一用
->with()
:比如
to_route('users.index')->with('status', '用户已创建')
,目标页用
{{ session('status') }}
读取 参数规则和视图中
route()
完全一致——别以为重定向就能松一点,
redirect()->route('user.update', [123])
一样报错 最容易被忽略的点:可选参数传
null
会被自动忽略,但传空字符串
''
或
0
不会——
route('post.show', ['id' => 5, 'slug' => ''])
会生成
/post/5/
(末尾多一个斜杠),而
['id' => 5, 'slug' => null]
才是干净的
/post/5
。

相关文章