我知道这是一个愚蠢的问题,但我正处于学习 Laravel 的最初阶段,没有任何人的指导或帮助。所以请不要介意。得到答案后我会删除它。
我正在使用具有反应惯性的 Laravel。我正在提交从“/p/create”到“/p”路线的表单,该表单返回 404 未找到错误。找不到这里出了什么问题。
我的路线:
Route::get('/p/create', function () {
return Inertia::render('Posts');
})->name('posts.create');
Route::post('/p', [PostController::class, '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') }}"
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>
);
}
您定义的“post”路线没有名称属性。改成这样:
Route::post('/p', [PostController::class, 'store'])->name('posts.store');
然后,你就可以像这样使用它了:
action="{{ route('posts.store') }}"
在此处阅读更多信息:https://laravel.com/docs/11.x/routing#named-routes
您错过了路线名称,只需将路线更改为:
Route::post('/p', [PostController::class, 'store'])->name('posts.store');