Я изменяю CMS, который я использую в своих проектах, и недавно я решил создать контроллер для действий по умолчанию BaseController, где все остальные контроллеры расширят этот контроллер BaseController.
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class BaseController extends Controller
{
    protected $viewFolder = 'admin';
    protected $title;
    protected $model;
    protected $key = 'id';
    protected $files = [];
    public function __construct()
    {
        $this->setVariable('title', $this->title);
    }
    public function index()
    {
        $items = $this->model::paginate();
        $this->setVariable('items', $items);
        return $this->viewRender('index');
    }
    public function create()
    {
        return $this->viewRender('create');
    }
    public function store(ExampleStoreRequestFROMEXAMPLECONTROLLER $request)
    {
        $item = $this->model::create($request->all());
        return redirect()->route($this->viewFolder.'.'.$this->viewType.'.show', $item[$this->key]);
    }
    public function show($id)
    {
        $item = $this->model::where($this->key, $id)->firstOrFail();
        $this->setVariable('item', $item);
        return $this->viewRender('show');
    }
    public function edit($id)
    {
        $item = $this->model::where($this->key, $id)->firstOrFail();
        $this->setVariable('item', $item);
        return $this->viewRender('edit');
    }
    public function update(ExampleUpdateRequestFROMEXAMPLECONTROLLER $request, $id)
    {
        $item = $this->model::where($this->key, $id)->firstOrFail();
        $item->update($request->except(['_token', '_method']));
        return redirect()->route($this->viewFolder.'.'.$this->viewType.'.show', $item[$this->key]);
    }
    public function status(ExampleStatusRequestFROMEXAMPLECONTROLLER $request, $id)
    {
        $this->model::where($this->key, $id)->update($request->except('_method'));
        return response()->json([
            'message' => 'O status foi alterado com sucesso'
        ]);
    }
    public function destroy($id)
    {
        $this->model::where($this->key, $id)->delete();
        return redirect()->route($this->viewFolder.'.'.$this->viewType.'.index');
    }
}
 Проблема в том, что я написал BaseController используя Запросы формы UserController и я не знаю, как оставить динамический запрос, чтобы я мог реализовать их с других контроллеров.
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Requests\ExampleStatusRequest;
use App\Http\Requests\ExampleStoreRequest;
use App\Http\Requests\ExampleUpdateRequest;
class ExampleController extends BaseController
{
    protected $viewType = 'users';
    protected $model = 'App\Example';
    public function index()
    {
        $this->setVariable('title', 'Usuários');
        return parent::index();
    }
    public function create()
    {
        $this->setVariable('title', 'Cadastrar usuário');
        return parent::create();
    }
    public function store(ExampleStoreRequest $request)
    {
        return parent::store($request);
    }
    public function edit($id)
    {
        $this->setVariable('title', 'Editar usuário');
        return parent::edit($id);
    }
    public function update(ExampleUpdateRequest $request, $id)
    {
        return parent::update($request, $id);
    }
    public function status(ExampleStatusRequest $request, $id)
    {
        return parent::status($request, $id);
    }
}
Вот мой контроллер по умолчанию:
<?php
namespace App\Http\Controllers;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
class Controller extends BaseController
{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
    protected $viewFolder = '';
    protected $viewType = '';
    protected $viewVariables = [];
    protected function setVariable($key, $value)
    {
        $this->viewVariables[$key] = $value;
    }
    protected function viewRender($view)
    {
        return view($this->viewFolder.'.pages.'.$this->viewType.'.'.$view, $this->viewVariables);
    }
}
Любая идея, как это решить?
