我有一个张贴标题和正文的表格。当我提交时,什么也没发生。我有一个csrf
字段,我正在使用post方法。
我尝试了多种不同的方式来声明操作和方法。我也尝试用不同的方式调用csrf
字段。这些都不起作用。
路线:
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>
PostsController:
public function store(Request $request)
{
return "Form posted";
}
发布模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
//
}
PostsController中的存储功能为空。因此,我希望在提交时收到一个空白页,但是什么也没发生。
答案 0 :(得分:0)
这是用于创建新的数据库注册表还是用于编辑现有的数据库注册表?
如果用于创建,请完全删除@method('POST')
位。如果用于编辑,请将其更改为@method('PATCH')
。
答案 1 :(得分:0)
删除 @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());
}
答案 2 :(得分:0)
dilip hirapara在评论中给出了解决方案。
我删除了:
<input type="button" name="submit" value="Submit" class="btn btn-primary">
并添加:
<button type="submit" class="btn btn-primary"> Submit </button>
答案 3 :(得分:0)
<meta name="csrf-token" content="{{ csrf_token() }}">
将其放在头文件中。有时对于csrf,我们需要将其作为元标记。