Я пытался добавить FormRequest
с правилами и сообщением в мой метод удаления, но запрос возвращается пустым, и правила каждый раз терпят неудачу.
Можно ли получить данные запроса методом удаления?
Вот мой класс запроса:
use App\Http\Requests\Request;
class DeleteRequest extends Request
{
/**
* 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 [
'staff_id' => ['required', 'exists:users,uid'],
'reason' => ['required', 'string'],
];
}
/**
* Get custom messages for validator errors.
*
* @return array
*/
public function messages()
{
return [
'staff_id.required' => staticText('errors.staff_id.required'),
'staff_id.exists' => staticText('errors.staff_id.exists'),
'reason.required' => staticText('errors.reason.required'),
'reason.string' => staticText('errors.reason.string'),
];
}
}
И контроллер:
/**
* Handle the 'code' delete request.
*
* @param integer $id The id of the code to fetch.
* @param DeleteRequest $request The request to handle the data.
* @return response
*/
public function deleteCode($id, DeleteRequest $request)
{
dd($request->all());
}
Несмотря на то, что в спецификации HTTP / 1.1 явно не указано, что в запросах DELETE не должно быть тела объекта, некоторые реализации полностью игнорируют тело, содержащее ваши данные, например, некоторые версии Jetty и Tomcat. С другой стороны, некоторые клиенты также не поддерживают отправку.
Думайте об этом как GET
запрос. Вы видели что-нибудь с данными формы? DELETE
запросы почти одинаковые.
Вы можете прочитать много на эту тему. Начни здесь:
RESTful альтернативы DELETE тела запроса
Кажется, что вы хотите изменить состояние ресурса, а не уничтожать его. Софт-удаление не удаляется и поэтому требует либо PUT
или PATCH
метод, который поддерживает оба тела сущностей. Если это не мягкое удаление, вы выполняете две операции через один вызов.
Других решений пока нет …