php - 如何在 Laravel 的资源控制器的方法中自动添加条件?
问题描述
我正在尝试if
在资源自动生成时添加条件。
当我运行时php artisan make:controller SomeController -r
,我想生成以下内容,
class SomeController extends Controller
{
public function index()
{
if (Auth::user()->can('')){
//
}else{
//
}
}
public function create()
{
if (Auth::user()->can('')){
//
}else{
//
}
}
public function store(Request $request)
{
if (Auth::user()->can('')){
//
}else{
//
}
}
public function show($id)
{
if (Auth::user()->can('')){
//
}else{
//
}
}
public function edit($id)
{
if (Auth::user()->can('')){
//
}else{
//
}
}
public function update(Request $request, $id)
{
if (Auth::user()->can('')){
//
}else{
//
}
}
public function destroy($id)
{
if (Auth::user()->can('')){
//
}else{
//
}
}
}
解决方案
尝试使用中间件来执行此操作,请参阅:https ://laravel.com/docs/master/middleware
namespace App\Http\Middleware;
use Auth;
use Closure;
class AuthCan {
public function handle($request, Closure $next)
{
if (Auth::user()->can('')){
//
return $next($request);
}else{
//
return response()->json(['status' => false, 'code' => 1001, 'msg' => 'Cannot ...']);
}
}
}
在以下位置定义了您的路由中间件app/Http/Kernel.php
:
protected $routeMiddleware = [
'AuthCan' => \App\Http\Middleware\AuthCan::class,
...
并在路由中使用中间件。
Route::group(['middleware' => 'AuthCan'], function(){
Route::get('/', 'SomeController@index');
Route::get('/{id}', 'SomeController@show');
...
}
推荐阅读
- php - 不获取使用图形 api 在 fb 页面上评论的用户详细信息
- c# - 带有集合的自定义控件:集合编辑器出现但立即再次消失
- python - 得到 AttributeError SQLsqlalchemy('NoneType' 对象没有属性 '_instantiate_plugins')
- oracle - Oracle 隐式转换警告
- interactive-brokers - 如何在 Interactive Broker IB API 中获取每个账户的所有股票?
- node.js - NodeJS TypeScript - Docker 图像构建但不会运行
- javascript - 与其他 div 下的 div 交互(低 Z 索引直通)
- c# - C#字符串连接问题
- php - 如何在不进入mysql的情况下以php形式编写计算?
- python - 如何优化等待时间?(Python)