diglactic/laravel-breadcrumbs如何将父级修改为指向子目录的自定义链接
问题解决方法
根因说明
这个问题本质是Laravel部署在子目录时,默认生成的路由没有自动带上子目录前缀,导致route('home')生成的路径指向根域名而非子目录。
可选择的解决方案
方案1:配置全局路由前缀(优先推荐)
一次性解决所有路由生成的前缀问题,原有面包屑代码无需修改:
- 打开
app/Providers/RouteServiceProvider.php,修改boot方法:
public function boot() { // 新增全局路由前缀配置 $this->prefix(env('APP_SUBDIR', ''))->group(function () { parent::boot(); }); }
- 在
.env文件添加对应配置:
APP_SUBDIR=/myapp
配置完成后所有通过route()函数生成的链接都会自动带上/myapp前缀。
方案2:单独修改home面包屑定义
如果不想改动全局配置,可以直接调整home面包屑的跳转路径:
Breadcrumbs::for('home', function (BreadcrumbTrail $trail) { // 直接指定跳转路径,不需要用route()生成 $trail->push('首页', '/myapp/'); });
方案3:仅调整当前blog面包屑的父级
如果只有这一处面包屑需要适配,也可以跳过调用parent方法,手动添加父级项:
Breadcrumbs::for('blog', function (BreadcrumbTrail $trail) { $trail->push('首页', '/myapp/'); $trail->push('Blog', route('blog')); });
验证生效
修改完成后执行以下命令清空缓存即可:
php artisan route:clear php artisan config:clear
内容的提问来源于stack exchange,提问作者Loyou
相关产品推荐
相关产品推荐

