css - 设置 Laravel 5 cookie,以便 CSS 动画仅在第一次访问时运行

标签 css cookies laravel navbar laravel-5

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

需要说明的是,我已经让动画正常工作了,我感兴趣的只是 Laravel cookie 的设置和检索。

我已经按照我想要的方式使用 this solution 了但是我想尝试使用 Laravel 让它工作。

用 Laravel 实现这个有什么好处/坏处吗?

最佳答案

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

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

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);
    }
}

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

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

注意 此代码未经测试。我只是根据我对 Laravel 4 的了解以及我在 Laravel 5 文档中阅读的一些内容编写了它。此外,如果它碰巧起作用,我不知道这是否(仍然)是一个好习惯。

关于css - 设置 Laravel 5 cookie,以便 CSS 动画仅在第一次访问时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27665899/

相关文章:

perl - 我的 CGI 脚本 cookie 设置和获取

php - 如何使用 Laravel 事件?

node.js - node npm run watch 退出状态 3221225725

javascript - 如何固定箭头的位置不依赖于 Jquery 工具提示中的内容?

jquery - Twitter Bootstrap Modal 和 Jquery Cookie 插件

Javascript利用具有samesite属性的cookie?

php - Laravel - 如何知道关系表中是否存在该属性

html - Css Nth-Child 选择器未选择预期的元素

jquery - 有没有办法强制 jQuery UI 菜单子(monad)菜单始终向上而不是向下定位?

javascript - 在动态 form.submit() 之后应用 CSS