Проверка исключает определенные поля из данных запроса.Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проверка исключает определенные поля из данных запроса.

Сообщение Anonymous »

Я работаю над проектом Laravel, где занимаюсь созданием свойств, и столкнулся с проблемой, когда определенные поля (

Код: Выделить всё

facilities
и extra_facilities) отсутствуют в проверенных данных, хотя они присутствуют в запросе.
В методе store() моего контроллера я используйте PropertyStoreRequest для проверки. Запрос содержит такие поля, как удобства, дополнительные_услуги, удобства и т. д.
После проверки я ожидаю, что эти поля будут присутствовать в $validatedData, но по какой-то причине включены только удобства, а удобства и дополнительные_услуги отсутствуют.
Вот соответствующий код:
Проверка запроса (PropertyStoreRequest):

Код: Выделить всё

class PropertyStoreRequest extends FormRequest
{
public function authorize(): bool
{
return auth()->user()->isHost();
}

public function rules(): array
{
return [
'title' => 'required|string|max:255',
'description' => 'required|string',
'location' => 'required|string|max:255',
'price_per_night' => 'required|numeric|min:0',
'max_guests' => 'required|integer|min:1',
'photos' => 'required|array|min:3',
'photos.*' => 'image|mimes:jpg,jpeg,png|max:2048',
'facilities' => 'required|array',
'facilities.*' => 'integer|exists:facilities,id',
'additional_facilities' => 'nullable|array',
'additional_facilities.*' => 'integer|exists:additional_facilities,id',
'amenities' => 'required|array',
'amenities.*' => 'integer|exists:amenities,id',
];
}

protected function failedValidation(Validator $validator)
{
Log::error('Validation failed:', $validator->errors()->all());
throw new HttpResponseException(response()->json([
'errors' => $validator->errors(),
], 422));
}
}
Контроллер (метод store())

Код: Выделить всё

public function store(PropertyStoreRequest $request)
{
Log::info('Property coming data:', $request->all());

$validatedData = $request->validated(); // Facilities and additional_facilities missing

// Create property
$property = Property::create([
'title' => $validatedData['title'],
'description' => $validatedData['description'],
'location' => $validatedData['location'],
'price_per_night' => $validatedData['price_per_night'],
'max_guests' => $validatedData['max_guests'],
'photos' => json_encode($this->handleFileUpload($request, 'photos', 'property_photos')),
'user_id' => auth()->id(),
'is_available' => $validatedData['is_available'] ?? true,
]);

// Syncing relations
$this->syncRelations($property, $validatedData, $request);

return response()->json($property, 201);
Выходные данные журнала показывают, что возможности и дополнительные_возможности присутствуют в необработанном запросе, но отсутствуют в $validatedData:

[2024-10-24 13:45:01] local.INFO: Данные о собственности: {...}
[2024-10 -24 13:45:01] local.INFO: проверенные данные из запроса: {... "amenities":["1","2"], "photos":[...][2024-10-24 13:45:01] local.INFO: Средства для синхронизации: []
[2024-10-24 13:45:01 ] local.INFO: Дополнительные возможности для синхронизации: []
[2024-10-24 13:45:01] local.INFO: Дополнительные возможности для синхронизации: [1,2]

Что я пробовал:
  • Проверил наличие базы данных: оба объекта Таблицы и extra_facilities содержат действительные идентификаторы, соответствующие запросу.
  • Переопределение данных вручную: я установил вручную объекты и дополнительные_возможности в контроллере после проверки и связи синхронизируются должным образом, что означает отсутствие проблем с синхронизацией — только с проверкой.
Зарегистрирован сбой проверки: ошибки проверки не регистрируются, что говорит о том, что проверка этих полей проходит, но они по-прежнему не отображаются в $validatedData.< /п>

Подробнее здесь: https://stackoverflow.com/questions/791 ... quest-data
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»