Laravel 使用 post 方法的表单未提交
Laravel form with post method is not submitting
我有一个表格 post 有一个标题和一个 body。当我提交时,没有任何反应。我有一个 csrf
字段,我正在使用 post 方法。
我尝试了很多不同的方式来声明动作和方法。我也尝试以不同的方式调用 csrf
字段。 None 有效。
路线:
Route::resource('/posts', 'PostsController');
Create.blade.php
<form action="{{route('posts.store')}}" method="POST">
@csrf
// removed @method('POST')
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control" placeholder="Title">
</div>
<div class="form-group">
<label for="body">Body</label>
<textarea name="body" placeholder="Body" class="form-control" cols="30" rows="10"></textarea>
</div>
<input type="button" name="submit" value="Submit" class="btn btn-primary">
</form>
Post控制器:
public function store(Request $request)
{
return "Form posted";
}
Post 型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
//
}
这里有所有可用的路线:
PostsController 中的存储函数为空。所以我希望在提交时收到一个空白页面,但没有任何反应。
这是为了创建新的数据库注册表,还是为了编辑现有的数据库注册表?
如果是用于创建,则完全删除 @method('POST')
位。如果是为了编辑,就改成@method('PATCH')
.
移除@method('POST')
<form action="{{route('posts.store')}}" method="POST">
{{ csrf_field() }}
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control" placeholder="Title">
</div>
<div class="form-group">
<label for="body">Body</label>
<textarea name="body" placeholder="Body" class="form-control" cols="30" rows="10"></textarea>
</div>
<button type="submit" class="btn btn-primary"> Submit </button>
</form>
在您的控制器中。
public function store(Request $request)
{
echo '<pre>';
print_r($request->all());
}
dilip hirapara在评论中给出了解决方案。
我删除了:
<input type="button" name="submit" value="Submit" class="btn btn-primary">
并添加:
<button type="submit" class="btn btn-primary"> Submit </button>
<meta name="csrf-token" content="{{ csrf_token() }}">
把这个放在你的头文件中。有时对于 csrf,我们需要将其作为元标记。
我有一个表格 post 有一个标题和一个 body。当我提交时,没有任何反应。我有一个 csrf
字段,我正在使用 post 方法。
我尝试了很多不同的方式来声明动作和方法。我也尝试以不同的方式调用 csrf
字段。 None 有效。
路线:
Route::resource('/posts', 'PostsController');
Create.blade.php
<form action="{{route('posts.store')}}" method="POST">
@csrf
// removed @method('POST')
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control" placeholder="Title">
</div>
<div class="form-group">
<label for="body">Body</label>
<textarea name="body" placeholder="Body" class="form-control" cols="30" rows="10"></textarea>
</div>
<input type="button" name="submit" value="Submit" class="btn btn-primary">
</form>
Post控制器:
public function store(Request $request)
{
return "Form posted";
}
Post 型号:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
//
}
这里有所有可用的路线:
PostsController 中的存储函数为空。所以我希望在提交时收到一个空白页面,但没有任何反应。
这是为了创建新的数据库注册表,还是为了编辑现有的数据库注册表?
如果是用于创建,则完全删除 @method('POST')
位。如果是为了编辑,就改成@method('PATCH')
.
移除@method('POST')
<form action="{{route('posts.store')}}" method="POST">
{{ csrf_field() }}
<div class="form-group">
<label for="title">Title</label>
<input type="text" name="title" class="form-control" placeholder="Title">
</div>
<div class="form-group">
<label for="body">Body</label>
<textarea name="body" placeholder="Body" class="form-control" cols="30" rows="10"></textarea>
</div>
<button type="submit" class="btn btn-primary"> Submit </button>
</form>
在您的控制器中。
public function store(Request $request)
{
echo '<pre>';
print_r($request->all());
}
dilip hirapara在评论中给出了解决方案。
我删除了:
<input type="button" name="submit" value="Submit" class="btn btn-primary">
并添加:
<button type="submit" class="btn btn-primary"> Submit </button>
<meta name="csrf-token" content="{{ csrf_token() }}">
把这个放在你的头文件中。有时对于 csrf,我们需要将其作为元标记。