设置Laravel 5 cookie,以便CSS动画仅在首次访问时运行

时间:2014-12-27 09:16:31

标签: css cookies laravel navbar laravel-5

我想通过在cookie中设置Laravel 5来检查用户是否第一次访问我的网站。如果是,则淡入导航栏(我正在使用Twitter Bootstrap 3.3.1和animate.css)。在后续访问中,我想检查cookie以及是否存在,然后显示没有动画的默认导航栏。

为了清楚起见,我已经让动画工作了,它只是我感兴趣的Laravel cookie的设置和检索。

我已经了解了如何使用this solution,但我想尝试使用Laravel。

使用Laravel实现此功能有任何好处/不足吗?

1 个答案:

答案 0 :(得分:0)

首先,使用Laravel进行此操作的优势主要在于您获得了与您的(服务器端)代码的其余部分相匹配的良好语法,并且您拥有通常可以开箱即用的功能。

此功能的一个好地方是view composer。每次呈现特定视图时都会触发视图编辑器。文档说明了如何添加新的视图编辑器。在服务提供商内部,您将拥有:

public function boot(ViewFactory $view)
{
    $view->composer('the-name-of-your-view-with-the-navbar', 'App\Http\ViewComposers\NavbarComposer');
}

这就是你的NavbarComposer应该是什么样的

class NavbarComposer {
    protected $cookie;

    public function __construct(Cookie $cookie){
        $this->cookie = $cookie;
    }

    public function compose(View $view){
        $imNew = !$this->cookie->has('visited');
        if($imNew == true){
            $this->cookie->queue('visited', true, 2628000); // this is the value for 5 years
        }
        $view->with('imNew', $imNew);
    }
}

然后在您的视图中,您可以使用$imNew作为变量

@if($imNew)
    {{-- show animation --}}
@endif

注意此代码未经过测试。我根据我对Laravel 4的了解以及我在Laravel 5文档中阅读的一些内容编写了它。此外,如果它偶然发生,我不知道这是否仍然是一种良好的做法。