Получение ошибки 404 не найдено после отправки формы

Я знаю, что это глупая проблема, но я нахожусь на самом начальном этапе изучения Laravel без какого-либо руководства или помощи со стороны кого-либо. так что, пожалуйста, не возражайте. Я удалю его после получения ответа.

Я использую Laravel с инерцией реагирования. Я отправляю форму с маршрута «/p/create» на маршрут «/p», который возвращает мне ошибку 404 не найден. не могу найти, что здесь пошло не так.

Мои маршруты:

Route::get('/p/create', function () {
    return Inertia::render('Posts');
})->name('posts.create');

Route::post('/p', [PostController::class, 'store'])->name('posts.store');

мой Постконтроллер:

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class PostController extends Controller
{

    public function store()
    {
        dd(request()->all())
    }
}

Форма '/p/create'


export default function Posts({ auth }) {
    return (
        <div className = "post">
            <Navbar auth = {auth} />

            <form
                encType = "multipart/form-data"
                action = "{{ route('posts.store') }}"
                method = "POST"
            >
                <input
                    type = "hidden"
                    name = "_token"
                    value = "{!! csrf_token() !!}"
                />

                <input type = "file" name = "image" />
                <textarea name = "caption" />
                <button type = "submit">Post</button>
            </form>
        </div>
    );
}

мой список маршрутов:

PS E:\PHP projects\new and final\back\Instagram> php artisan route:list

  GET|HEAD  / .................................................................................. generated::1UHNC2h1AcGloyZQ
  POST      _ignition/execute-solution ....... ignition.executeSolution › Spatie\LaravelIgnition › ExecuteSolutionController  
  GET|HEAD  _ignition/health-check ................... ignition.healthCheck › Spatie\LaravelIgnition › HealthCheckController  
  POST      _ignition/update-config ................ ignition.updateConfig › Spatie\LaravelIgnition › UpdateConfigController
  GET|HEAD  confirm-password .................................... password.confirm › Auth\ConfirmablePasswordController@show  
  POST      confirm-password ........................ generated::vG6ZS3cMZcBju2hz › Auth\ConfirmablePasswordController@store  
  GET|HEAD  dashboard ............................................................................................ dashboard  
  GET|HEAD  dashboard/{user} ................................................................................ dashboard.user  
  POST      email/verification-notification ......... verification.send › Auth\EmailVerificationNotificationController@store  
  GET|HEAD  forgot-password ..................................... password.request › Auth\PasswordResetLinkController@create  
  POST      forgot-password ........................................ password.email › Auth\PasswordResetLinkController@store  
  GET|HEAD  login ....................................................... login › Auth\AuthenticatedSessionController@create  
  POST      login .................................. generated::WxuQbzVnBo7s2ikB › Auth\AuthenticatedSessionController@store  
  POST      logout .................................................... logout › Auth\AuthenticatedSessionController@destroy  
  POST      p ........................................................................... posts.store › PostController@store  
  GET|HEAD  p/create .......................................................................................... posts.create
  PUT       password ...................................................... password.update › Auth\PasswordController@update  
  GET|HEAD  profile .................................................................. profile.edit › ProfileController@edit  
  PATCH     profile .............................................................. profile.update › ProfileController@update  
  DELETE    profile ............................................................ profile.destroy › ProfileController@destroy  
  GET|HEAD  register ....................................................... register › Auth\RegisteredUserController@create  
  POST      register ..................................... generated::UZNwLO2B8FS0PVb4 › Auth\RegisteredUserController@store  
  POST      reset-password ............................................... password.store › Auth\NewPasswordController@store  
  GET|HEAD  reset-password/{token} ...................................... password.reset › Auth\NewPasswordController@create  
  GET|HEAD  sanctum/csrf-cookie .......................... sanctum.csrf-cookie › Laravel\Sanctum › CsrfCookieController@show  
  GET|HEAD  up ................................................................................. generated::pquyE3RwESLgrYla
  GET|HEAD  verify-email ...................................... verification.notice › Auth\EmailVerificationPromptController  
  GET|HEAD  verify-email/{id}/{hash} ...................................... verification.verify › Auth\VerifyEmailController  

{{ route('posts.store') }} С этим маршрута нет name
brombeer 17.04.2024 11:18

Не знаю, почему вы изменили/отредактировали свой маршрут с {{ route('posts.store') }} на {{ route('posts') }}, но то же самое: маршрута с названием posts не существует.

brombeer 17.04.2024 11:27
Стоит ли изучать 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
2
60
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

Вы определили свой маршрут «post» без атрибута имени. Измените это на это:

Route::post('/p', [PostController::class, 'store'])->name('posts.store');

И тогда вы сможете использовать его следующим образом:

action = "{{ route('posts.store') }}"

Подробнее здесь: https://laravel.com/docs/11.x/routing#named-routes

нет, все еще получаю ошибку

Naimur Sharon 17.04.2024 11:39

Можете ли вы выполнить маршрут php artisan:list и вставить результат этой команды в свой вопрос?

zlatan 17.04.2024 11:40

Я получаю сообщение об ошибке PostController не существует. но у меня здесь постконтроллер

Naimur Sharon 17.04.2024 12:05

В этом случае либо ваш импорт неверен в web.php (или не импортирован вообще), либо неправильное пространство имен вашего PostController, что означает, что ваш контроллер вложен в какой-то другой каталог внутри app/Http/Controllers.

zlatan 17.04.2024 12:07

я их перепроверил. у них все в порядке, но он все еще не работает

Naimur Sharon 17.04.2024 13:46

я добавил список маршрутов. пожалуйста, проверьте их

Naimur Sharon 17.04.2024 14:11

Вы пропустили название маршрута, просто измените его на это:

Route::post('/p', [PostController::class, 'store'])->name('posts.store');

нет, все еще получаю ошибку

Naimur Sharon 17.04.2024 11:27

нормально ли использовать '/p' вместо {{ маршрут('posts.store') }} ?

Mehdi 17.04.2024 11:33

@NaimurSharon Если это не работает, убедитесь, что маршрут отображается (с правильным названием) в php artisan route:list. Если это не так, попробуйте очистить кеш маршрутов: php artisan route:clear

brombeer 17.04.2024 11:34

я получаю сообщение об ошибке PostController не существует после запуска php artisan маршрута: список

Naimur Sharon 17.04.2024 12:02

Вам следует добавить use App\Http\Controllers\PostController; или каталог контроллера в файл маршрута, а также проверить имена.

Mehdi 17.04.2024 12:25

да, я добавил его, но он все еще не работает

Naimur Sharon 17.04.2024 13:44

@NaimurSharon Пожалуйста, отредактируйте свой вопрос и добавьте измененный код, чтобы мы знали, с чем здесь работаем. «это все еще не работает» никому не помогает, пожалуйста, всегда публикуйте полное сообщение об ошибке, которое вы получаете. Это все еще ошибка 404 или «PostController не существует»?

brombeer 17.04.2024 14:10

я изменил их и добавил списки маршрутов. пожалуйста, проверьте

Naimur Sharon 17.04.2024 14:12

обновите файл web.php полным файлом и прикрепите изображение каталога ваших контроллеров.

Mehdi 17.04.2024 14:16

Вот решение, которое работает для меня.

// Вызов контроллера в файле маршрута

use App\Http\Controllers\PostController;

// Определение маршрута

Route::post("/p", [PostController::class, 'store'])->name('store');

// Использование в файле представления

action = "{{ route('store') }}"

да, я использовал их, и они все еще не работают

Naimur Sharon 17.04.2024 13:44

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