【问题标题】:How can I automatically add conditions in the method of a resource controller in Laravel?如何在 Laravel 的资源控制器的方法中自动添加条件?
【发布时间】:2020-03-15 19:37:44
【问题描述】:

我正在尝试在资源自动生成时添加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{
           //
        }
    }
}

【问题讨论】:

  • 您可能需要查看自定义生成器,以便定义要用于生成控制器的存根文件......如果您真的想要这样的自定义控制器

标签: php laravel laravel-6 laravel-resource


【解决方案1】:

尝试使用中间件来做到这一点, 见: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');
    ...
}

【讨论】:

    猜你喜欢
    • 2016-07-05
    • 2019-01-25
    • 2013-05-15
    • 2021-10-08
    • 2013-12-15
    • 2014-12-19
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多