Reputation: 2018
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
Upvotes: 3
Views: 2961
Reputation: 2109
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');
}
Upvotes: 5