【发布时间】:2019-06-12 11:36:27
【问题描述】:
我做了一条这样的路线:
Route::get('free-download/{product}' , 'ProductController@freeDownload')->name('product.free')->middleware('auth');
此路由在调用 freeDownload 方法之前检查用户是否已登录。如果没有,就会出现登录表单。
然后用户需要登录,登录控制器返回主页,用户需要再次单击按钮路由('product.free')才能访问路由名称“product.free”。
有一种方法可以调用 ProductController@freeDownload 方法 如果用户在之前点击了按钮,则在登录后?
希望我或多或少清楚。
这里是我的登录控制器:
class LoginController extends Controller
{
use AuthenticatesUsers;
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest')->except('logout');
}
}
我的 freeDownload 方法终于来了
public function freeDownload(Product $product){
$user_download = UserDownload::where('user_id' , auth()->user()->id)->where('product_id' , $product->id)->exists();
if(!$user_download && $product->file){
$user_download = new UserDownload();
$user_download->user_id = auth()->user()->id;
$user_download->product_id = $product->id;
$user_download->save();
$product->downloads = $product->downloads + 1;
$product->save();
return Storage::disk('s3')->download($product->file);
}else{
Alert::error('Download error', 'file not found');
return back();
}
}
【问题讨论】:
标签: laravel