我想通过设置 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/