You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel会话链接实现:双季节版本网站logo跳转功能开发问询

实现Laravel Session驱动的季节版首页跳转

嘿,这个需求其实很好实现,核心就是用Session跟踪用户当前所在的季节版本,然后动态生成Logo的跳转链接就行。咱们一步步来:


1. 用Session记录当前季节版本

首先,我们需要在用户切换季节或者进入对应季节页面时,把当前季节存入Session里。有两种常见方式:

方式一:在季节首页路由中直接设置

修改你的routes/web.php,给冬季和夏季首页路由加上Session写入逻辑:

// 冬季首页
Route::get('/', function () {
    session()->put('current_season', 'winter');
    return view('winter.home');
})->name('winter.home');

// 夏季首页
Route::get('/summer', function () {
    session()->put('current_season', 'summer');
    return view('summer.home');
})->name('summer.home');

方式二:用中间件统一处理(更适合多内页场景)

如果你的季节内页很多(比如/summer/about、/winter/contact等),直接在每个路由里写Session太麻烦,推荐用中间件自动识别:

步骤1:创建季节中间件

执行Artisan命令生成中间件:

php artisan make:middleware SeasonMiddleware

然后打开app/Http/Middleware/SeasonMiddleware.php,修改handle方法:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class SeasonMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        // 如果Session里没有记录当前季节,自动识别
        if (!session()->has('current_season')) {
            $currentSeason = str_contains($request->path(), 'summer') ? 'summer' : 'winter';
            session()->put('current_season', $currentSeason);
        }
        return $next($request);
    }
}

步骤2:注册中间件

打开app/Http/Kernel.php,把中间件加到web中间件组里:

protected $middlewareGroups = [
    'web' => [
        // 保留原有中间件...
        \App\Http\Middleware\SeasonMiddleware::class,
    ],
];

这样不管用户直接访问哪个季节的内页,Session都会自动记录当前季节。


2. 动态生成Logo的跳转链接

现在Session里已经有用户当前的季节了,只需要在视图里动态生成Logo的跳转URL就行:

直接在Blade视图中判断

<a href="{{ session('current_season', 'winter') === 'winter' ? route('winter.home') : route('summer.home') }}">
    <img src="/path/to/your-logo.png" alt="Site Logo">
</a>

这里session('current_season', 'winter')的第二个参数是默认值,确保第一次访问时默认跳冬季首页。

用辅助函数简化(可选)

如果多个页面都需要这个链接,写个辅助函数更方便:

  1. 在项目根目录创建app/Helpers.php文件,添加:
<?php

function getSeasonHomeUrl()
{
    $season = session('current_season', 'winter');
    return $season === 'winter' ? route('winter.home') : route('summer.home');
}
  1. 在composer.json里自动加载这个文件:
"autoload": {
    "files": [
        "app/Helpers.php"
    ],
    // 原有autoload内容...
}
  1. 执行composer dump-autoload让加载生效。

然后视图里就可以简化成:

<a href="{{ getSeasonHomeUrl() }}">
    <img src="/path/to/your-logo.png" alt="Site Logo">
</a>

这样就搞定啦!用户点击Logo时,会根据Session里记录的当前季节,跳转到对应版本的首页,完全符合你的需求~

内容的提问来源于stack exchange,提问作者user2519032

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:27:24