Laravel 5.3 dynamically binding validator to custom form request

I'm developing in a system using Laravel 5.3 and I"m trying to update custom validation rules. The architecture is currently as follows:

ProfileStoreRequest --> ProfileValidator ClientStoreRequest --> ClientValidator ...

What I'm basically trying to do here is to have only one object named "StoreRequest" which will call the correct validator depending on the route which is being called. Here's what I have so far:

In my routes:

Route::group([
    'prefix' => 'manage',
    'namespace' => 'Manage',
    'validators' => [
        'manage.profile.storeAjax' => [
            'name' => "required|max:40",
            'color' => "integer|digits_between:0,7",
            'service' => "integer", //digits_between:3,10
            'company_id' => "required|integer|exists:companies,id,deleted_at,NULL",
            'site_id' => "integer|siteIdExists"
        ]
    ]], function () {

    Route::post('/site/storeAjax', 'SiteController@storeAjax')->name('manage.site.storeAjax');
    Route::post('/company/storeAjax', 'CompanyController@storeAjax')->name('manage.company.storeAjax');

    Route::post('/employee/store', 'EmployeeController@store')->name('manage.employee.store');
    Route::post('/employee/addProfile', 'EmployeeController@addProfile')->name('manage.employee.addProfile');
    Route::post('/employee/removeProfile', 'EmployeeController@removeProfile')->name('manage.employee.removeProfile');
    Route::post('/employee/addSite', 'EmployeeController@addSite')->name('manage.employee.addSite');
    Route::post('/employee/removeSite', 'EmployeeController@removeSite')->name('manage.employee.removeSite');

    Route::post('/message/storeAjax', 'MessageController@storeAjax')->name('manage.message.storeAjax');
    Route::post('/profile/storeAjax', 'ProfileController@storeAjax')->name('manage.profile.storeAjax');
    Route::post('/timeEntry/storeAjax', 'TimeEntryController@storeAjax')->name('manage.timeEntry.storeAjax');
});

Next is my StoreRequest:

namespace App\Http\Requests;

use App\Http\Validators\ProfileValidator;
use Auth;
//use App\Model\TimeEntry;
use DateUtil;
use Illuminate\Contracts\Validation\Factory as ValidationFactory;

class StoreRequest extends AbstractRequest {

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize() {
//        prj(__METHOD__);

        $authorized = parent::authorize();

        if ($authorized) {
            $user = Auth::user();
            if ($user && $user->can('write')) {
                return true;
            } else {
                return false;
            }
        }
        return false;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules() {
        parent::rules();

        return $this->route()->getAction()['validators'][$this->route()->getName()];

    }

    /**
     * User messages
     * 
     * @return array
     */
    public function messages() {
        $messages = array_merge(parent::messages(), [
            'exists' => 'The selected :attribute is invalid for this time entry id.'
        ]);


        return $messages;
    }

    public function validate()
    {
        parent::validate();
    }
}

And of course, all of my custom validators are registered using service providers (here's an example with a profileValidator):

profileServiceProvider.php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Validator;

class ProfileServiceProvider extends ServiceProvider {

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot() {
        Validator::extend('siteIdExists', 'App\Http\Validators\ProfileValidator@validateSiteIdExists');
    }

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register() {
        //
    }

}

ProfileValidator.php

namespace App\Http\Validators;

use App\Model\Site;
use Mockery\Exception;


class ProfileValidator
{
    public function validateSiteIdExists($attribute, $value, $parameters, $validator)
    {
        if ($value == -1)
            return true;
        else
        {
                return Site::where(
                    [
                        ['id', '=', $value],
                        ['company_id', '=', $validator->getData()['company_id']]
                    ]
                )->whereNull('deleted_at')->exists();

        }
    }
}

So basically, my StoreRequest is capable of loading its validation rules from the route... however, no matter how hard I try, I can't figure how to bind the validator I want. Can anyone help me?