Laravelのフォームリクエストで、バリデーションされる値をカスタマイズする方法です。
APIのエンドポイントが/post/:id/delete
の時に、ルートパラメーターにフォームリクエストのバリデーションをかけたい・・なんて時に有効かもしれません。
Laravel APIにあるvalidationData
をいじります。
ルートパラメーターのidにバリデーションをかける例です。
<?php
namespace App\Http\Requests\Api\v1\Category;
use Illuminate\Foundation\Http\FormRequest;
class DeleteCategoryRequest extends FormRequest
{
const NOT_FOUND_CODE = 400;
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'id' => 'numeric',
];
}
/**
* Get data to be validated from the request.
*
* @return array
*/
protected function validationData()
{
return array_merge($this->request->all(), [
'id' => $this->route('id'),
]);
}
/**
* Get the error messages for the defined validation rules.
*
* @return array
*/
public function messages()
{
return [
'id.numeric' => 'This id is not number',
];
}
/**
* Get the proper failed validation response for the request.
*
* @param array $errors
*
* @return \Symfony\Component\HttpFoundation\Response
*/
public function response(array $errors)
{
$response['messages'] = $errors;
return response()->json($response, (int) self::NOT_FOUND_CODE);
}
}
結局このカスタマイズは何となく気持ち悪くて使っていません()
関連書籍