Как правильно использовать middleware в Laravel?
Нет. Хз в ларавел, но если там mvc, то данные запроса обратываются в контроллере, а middlaware там будет тем что стоит перед твоей обработкой в контролере. То есть например авторизация, мы в middlaware проверяем авторизован ли пользователь, если да, то передаем данные дальше на обработку в контролер. На практике их есть смысл заюзать если например пришел аналитик и сказал что если мы обрабатываем овощ, то надо выводить человеку сообщение: ты помидор, а у тебя куча контролер: картофанконтрлер, капустаконтролер, луккнотролер и т.п., и ты вместо того чтобы в них все вставлять сообщение ты помидор, добавляешь middlaware и в нем смотришь овощ ли это, и если да, то выводишь сообщение ты помидор.
Для валидации полей, есть валидатор
public function store(Request $request, StoreBlogTag $store)
    {
        $validate = Validator::make($request->all(), $store->rules(), $store->messages());
        if ($validate->fails()) {
            return redirect('post/create')
                ->withErrors($validate)
                ->withInput();
        };
        $tag = Tag::firstOrCreate([
            'title' => $request->input('title'),
            'slug' => Str::slug($request->input('title'), '-'),
        ]);
        $tag->save();
        return redirect()->back();
    }