Laravel 视图和下载计数-使用lightbox更新视图上的数据库并下载
我用laravel建立了一个网站,有一个页面,可以通过fancybox看到或下载高分辨率的图片。在数据库中,每个操作都有计数器。我已经为计数设置了路线,因为它们也用于其他情况 例如:www.myiste.com/somecode/someothercode/image/view 每个图像的简化结构如下所示。。这在for each循环内调用。。为了更好地阅读,我删除了所有样式和类Laravel 视图和下载计数-使用lightbox更新视图上的数据库并下载,laravel,fancybox,counter,Laravel,Fancybox,Counter,我用laravel建立了一个网站,有一个页面,可以通过fancybox看到或下载高分辨率的图片。在数据库中,每个操作都有计数器。我已经为计数设置了路线,因为它们也用于其他情况 例如:www.myiste.com/somecode/someothercode/image/view 每个图像的简化结构如下所示。。这在for each循环内调用。。为了更好地阅读,我删除了所有样式和类 <div > <div class="card" style="background-col
<div >
<div class="card" style="background-color: lightgray">
<div >
<a data-fancybox="gallery" href="/images/......../{{$photo->filename}}">
<img class="card-img" src="/images/......../thumb/thumb_{{$photo->filename}}">
</a>
</div>
<div class="card-footer">
<div>
<div>
<a download="{{$photo->filename}}" href="/images/......../{{$photo->filename}}">
<span>Download (Hi-Res)</span>
</a>
</div>
<div>
<a download="social_{{$photo->filename}}" href="/images/......../social_{{$photo->filename}}">
<span>Download (Social-Res)</span>
</a>
</div>
</div>
</div>
</div>
</div>
我需要的是,当他们点击下载按钮时,它会在后台调用某个URL进行向上计数。。(最重要)
如果可能的话,我想在通过fancybox全屏查看图像时点击另一个URL
如何做到这一点?您可以采取以下措施:
<a data-fancybox="gallery" href="{{ route('photo.fancybox', ['photo' => $photo])}}">
<img class="card-img" src="/images/......../thumb/thumb_{{$photo->filename}}">
</a>
...
<a href="{{ route('photo.download', ['photo' => $photo])}}">
<span>Download (Hi-Res)</span>
</a>
并确保相应地注册您的新路线:
Route::get('photo/download', 'PhotoController@download')->name('photo.download');
Route::get('photo/fancybox', 'PhotoController@fancybox')->name('photo.fancybox');
将a标记href更改为控制器函数,该函数将增加下载计数并返回图像控制器函数仅计数。。它不会返回下载链接,因为它也在其他地方使用。。我目前正试图用vue和axios来实现这一点。。。那应该行。。但是我仍然没有关于fancybox部分的任何线索对于fancybox部分,您可以使用
afterShow
callback向某个页面发出ajax请求,在该页面上更新视图计数。谢谢,这解决了下载计数器的问题,但没有解决视图计数器的问题。。你也有解决方案吗?如果你是说FancyBox视图,你可以用同样的想法创建另一个函数。让我更新我的代码,解决第一次单击图像的问题,但如果他们使用左/右箭头转到下一张图片,则不会更新。只要您的转盘中的所有fancybox图片的href
正在呼叫控制器,它将起作用,给我半个小时的时间,我会报告。。谢谢你的帮助
Route::get('photo/download', 'PhotoController@download')->name('photo.download');
Route::get('photo/fancybox', 'PhotoController@fancybox')->name('photo.fancybox');