Как добавить свойство в запрос во время 'prepareForValidation' - PullRequest
1 голос
/ 24 марта 2020

Я использую Laravel 6.

У меня есть этот POST (для использования API):

http://localhost:8000/api/v1/schools/d4866265-3965-4b91-8d0a-a621c9eb68c6/periods/854624d4-69b2-419b-9763-416b5d146e2d/exams/bd0127fe-185a-42f5-b121-15f856daee43

Я использую проверку formRequest. Вот так:

public function rules(Request $request)
{
    return [
        'classroom_id' => [
            'required',
            new CoherenceSchoolPeriodClassroom($request->school_id, $request->period_id),
        ],

Как видите, мне нужен $ request-> school_id для теста. Но эти данные не относятся к полезной нагрузке запроса, а присутствуют на маршруте.

Итак, я хотел бы добавить эти данные, используя метод prepareForValidation:

protected function prepareForValidation(): void
{
    $this->merge([
        'school_id' => 'the school_id present on the route'
    ]);
}

Мой вопрос: как получить school_id в маршруте и объединить его в запросе?

1 Ответ

1 голос
/ 24 марта 2020

Предполагая, что ваш параметр маршрута называется school_id, вы можете получить к нему доступ как свойство или с помощью метода route().

'school_id' => $this->route('school_id')
// or
'school_id' => $this->school_id

Если вам нужно только проверить classroom_id, который вы используете не нужно объединять это в запрос:

public function rules(Request $request)
{
    return [
        'classroom_id' => [
            'required',
            new CoherenceSchoolPeriodClassroom($this->route('school_id'), $request->period_id),
        ],
...

Но вы можете объединить это так:

protected function prepareForValidation(): void
{
    $this->merge([
       'school_id' => $this->route('school_id')
    ]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...