Search code examples
phplaravelvalidationlaravel-5.3

How to access route parameter in custom validation rule laravel


How can I access route parameters in custom validation rule

Here's my code:

Route:

http://api.example.com/users/{user_id}/update
Route::post('users/{user_id}/update', 'UserController@update')->name('user:update');

My custom validation rule:

namespace App\Validators;

use Illuminate\Validation\Validator;

class Validators extends Validator
{
    public function __construct($translator,$data,$rules,$messages=[],$customAttributes=[])
    {
        parent::__construct($translator,$data,$rules,$messages,$customAttributes);
    }

    public function validateRole($attribute, $value, $rules)
    {
        // here I want to access the route parameters

        $user_id = $this->route('user_id');
    }
}
namespace App\Api\V1\Requests\SectionMilestone;

use App\Api\ApiRequest;

class SectionMilestoneRequest extends ApiRequest
{
    public function rules()
    {
        return [
            'teacher_id'    => 'required|role:school'
        ];
    }
}

If anybody knows how to accomplish this, please help me save some time.

Any help is appreciated. Thanks


Solution

  • You can take it directly from the request object or use the public request() function for it.

    public function validateRole($attribute, $value, $rules)
    {
    
        $user_id = request()->route('user_id');
    }