【问题标题】:Laravel 5.6 Apply Middleware for controller certain methodsLaravel 5.6为控制器应用中间件某些方法
【发布时间】:2018-07-01 12:59:22
【问题描述】:

Laravel 5.6 为控制器某些方法应用中间件

https://laravel.com/docs/5.6/controllers#controller-middleware

无需编写新类

class UserController extends Controller
{
    public function __construct()
    {
        // how can apply this middleware for certain methods eg. store, update ?
        $this->middleware(function ($request, $next) {
            // i need modify the $request->input('name')
            // before goes to method store, update

            // replace any space+ to a single space
            $request->merge(['name' => preg_replace('/\s+/', ' ', $request->input('name'))]);
            return $next($request);
        });
    }

    public function store(Request $request)
    {
        dd($request->all());
    }

    public function update(Request $request)
    {
        dd($request->all());
    }
}

已编辑,Laravel 5.6 中没有记录

    public function __construct()
    {
        $this->middleware(function ($request, $next) {

            // replace any space+ to a single space
            $request->merge(['name' => preg_replace('/\s+/', ' ', $request->input('name'))]);
            return $next($request);

        })->only(['store', 'update']);
    }

【问题讨论】:

  • middleware 的第二个参数,也是在 middleware 之后调用的构建器方法
  • @lagbox 我编辑了我的问题,它正确/合法吗?但它似乎工作大声笑

标签: laravel


【解决方案1】:

你可以这样使用

$this->middleware('auth',['only' => ['store','update']]); // Another Way $this->middleware('auth',['except' => ['index','show']]);

参考:https://laracasts.com/discuss/channels/general-discussion/apply-middleware-for-certain-methods?page=0

【讨论】:

  • 但是如果不写一个新的中间件类,如何结合$this->middleware(function ($request, $next)$this->middleware('i dont need a new class')->only('store');
  • 你可以使用默认的'auth'中间件
  • 我编辑了我的问题,因为我没有使用 auth 中间件,我需要在变量传递给方法之前修改 $request->input('name')
猜你喜欢
  • 2020-09-01
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多