Laravel 10x: запросы формы всегда возвращают сообщение об успешном завершении

У меня есть запросы формы под названием SignupRequest, которые содержат следующий код:

 public function authorize(): bool
    {
        return true;
    }

    public function rules(): array
    {
        return [
            'name_user' => 'required|min:5|max:100',
            'cellphone' => 'required|min:15|max:15',
            'email' => 'required|min:5|max:100|email:rfc,dns|unique:users,email_address',
            'password' => 'required|min:6|max:100|confirmed',
        ];
    }

В моем контроллере я настроил метод POST под названием signup:

public function signup(SignupRequest $request){
    $allRequests = $request->all();
    echo 'Great!';
}

Если я установлю возврат на false в authorize method и попытаюсь вызвать URL-адрес через запрос POST (с приложением почтальона), будет возвращена ошибка несанкционированной операции.

Если я установлю true и попытаюсь сделать запрос POST (с приложением postman) без каких-либо параметров, я получу ответ JSON:

{ "успех": правда }

Разве не правильно было бы обвинить, каких полей не хватает? Что я делаю не так?

ОБНОВЛЯТЬ:

Я использую laravel в качестве REST API.

В этом случае у меня есть эти два маршрута, объявленные в файле api.php:

/* ROUTES FOR USER */
Route::post('/users/signup', [App\Http\Controllers\Api\UserController::class, 'signup']);

/* DEFAULT ROUTE */
Route::get('/', function(){
    return response()->json([
        'success' => true
    ]);
});

В конце концов я обнаружил, что это сообщение об успехе связано с маршрутом типа GET, который был объявлен внутри файла api.php. Несмотря на это, всякий раз, когда я вызываю маршрут с помощью метода POST, запрос, кажется, перенаправляется на маршрут GET, есть ли проблема в Laravel по этому поводу?

Я думаю, вы не вызываете $request->validate() на входах

AJ Zack 17.05.2023 01:10

Запрос @AJZack будет проверен автоматически с помощью пользовательского класса запроса.

lezhni 17.05.2023 01:22

В конце концов я обнаружил, что это сообщение об успехе связано с маршрутом типа GET, который был объявлен внутри файла api.php. Несмотря на это, всякий раз, когда я вызываю маршрут с помощью метода POST, запрос, кажется, перенаправляется на маршрут GET, есть ли проблема в Laravel по этому поводу? Я обновляю сообщение для получения дополнительных объяснений.

Sudo Sur 17.05.2023 01:28

Первое, что нужно проверить: используете ли вы laravel по умолчанию .htaccess?

Ken Lee 17.05.2023 01:50

вы используете @method('post') / method = "POST" в вашем представлении?

AJ Zack 17.05.2023 01:54

@AJZack, нет, я не использую этот проект для просмотра, это всего лишь REST API. Весь код, который у меня есть, вы можете увидеть в вопросе. конфигурация laravel по умолчанию. Я просто удаляю Route::middleware('web') из RouteServiceProvider.php и удаляю строку ->prefix('API') из Route::middleware('api').

Sudo Sur 17.05.2023 01:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы используете запрос API, вам необходимо установить заголовок.

Accept: application/json

Теперь Laravel будет знать, что запрос является API, и вернет ответ JSON.

SignupRequest.php

class SignupRequest extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     */
    public function authorize(): bool
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array<string, \Illuminate\Contracts\Validation\Rule|array|string>
     */
    public function rules(): array
    {
        return [
            'name_user' => 'required|min:5|max:100',
            'cellphone' => 'required|min:15|max:15',
            'email' => 'required|min:5|max:100|email:rfc,dns|unique:users,email_address',
            'password' => 'required|min:6|max:100|confirmed',
        ];
    }
}

UserController.php

class UserController extends Controller
{
    public function index(SignupRequest $request)
    {
        $validated = $request->validated();
        return response()->json([
            'status' => true,
            'data' => $validated,
        ]);
    }
}

Успешный ответ

Ответ об ошибке проверки

Примечание:

  1. Если вы используете правило проверки confirmed, вам нужно будет добавить password_confirmation поле ввода для подтверждения пароля.

Другие вопросы по теме

Перенаправить зарегистрированного пользователя, если он перешел на страницу входа
Нпм ОШИБКА! путь \\wsl.localhost\Ubuntu-22.04\home\jdoe\DevProjects\litenotes\node_modules\.bin\autoprefixer
Мульти арендатор плюс складской фасад
Laravel Не удалось получить размер файла для файла в месте
Как исправить, что контроллер целевого класса не существует в Laravel? Он работает на другом контроллере, но не работает на этом конкретном контроллере
Использовать функцию многострочной стрелки в методе доступа в моделях laravel
Ошибка при загрузке ролей с разрешениями пользователей laravel
1452 — Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не работает в Laravel 10 — SQLSTATE [23000]: нарушение ограничения целостности
Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный '|', ожидание переменной (T_VARIABLE)
Как сделать ввод с уникальным правилом в схеме мутации?