【发布时间】:2020-05-13 20:49:14
【问题描述】:
我有一个通过 POST 将数据发送回 Laravel 的表单。问题是我创建的路由没有捕获 POST。我得到一个 404。
表格
<form action="/articles" method="post">
<div class='field'>
<label class='label' for='title'>Title</label>
<div class='control'>
<input class='input' type='text' name='title' id='title'>
</div>
</div>
<div class='field'>
<label class='label' for='excerpt'>Excerpt</label>
<div class='control'>
<textarea class='textarea' name='excerpt' id='excerpt'></textarea>
</div>
</div>
<div class='field'>
<label class='label' for='body'>Body</label>
<div class='control'>
<textarea class="textarea" name='body' id='body'></textarea>
</div>
</div>
<div class='field is-grouped'>
<div class='control'>
<button class='button is-link' type='submit'>Submit</button>
</div>
</div>
</form>
我的路线文件:
<?php
use Illuminate\Support\Facades\Route;
Route::get('/articles', 'ArticlesController@index');
Route::post('/articles', 'ArticlesController@store');
Route::get('/articles/create', 'ArticlesController@create');
我尝试了各种动作和方法的变化,但我总是得到404。
知道我做错了什么吗?
【问题讨论】:
-
你说你尝试过各种变体,但是你具体尝试过什么?您是否尝试过使用
url()助手?action="{{ url('/articles') }}"?您是否尝试过命名路线?Route::post('/articles', ...)->name('articles');和action="{{ route('articles') }}"?另外,请注意,您需要在<form>中使用 CSRF 令牌来使用POST方法:{{ csrf_field() }} -
我尝试了较长的 URL,例如“/public/articles”,我将 POST 替换为 GET。但是您建议使用 URL 辅助函数解决了这个问题。谢谢。你知道为什么“/articles”不起作用吗?我从 laracast.com 的“Laravel from scratch”视频中复制了它。
-
是的!为你发布一个快速答案,1 秒。