0

最近新安装了 laravel。尝试使用 POST 发送最小的基本表单。得到如下错误。尝试以下场景,但都没有成功处理表单。

我的表格

 <form method="post" action="/form_populating_data">

   @csrf_field
   {{ method_field('PUT') }}

  <?php foreach ($array as $key => $value): ?>

    <label
    for= <?php echo "'{$key}'" ?>
    >
    <?php echo "{$key}" ?>
    </label>

    <input
    type="text"
    id="1"
    value= <?php echo "{$value}" ?>
    >

    <br>

  <?php endforeach; ?>


  <input type="submit" name="" value="Save">

</form>

故障排除测试

起点,保持“get” [routes/web.php]

Route::get('/form_populating_data', function () {
    return view('site_tax_declarations/form_populating_data');
});

结果:

The POST method is not supported for this route. Supported methods: GET, HEAD. 

调整,改为“post” [routes/web.php]

Route::post('/form_populating_data', function () {
    return view('site_tax_declarations/form_populating_data');
});

结果:

The GET method is not supported for this route. Supported methods: POST. 

调整[form.php],保持[Route:get]

在 POST 标签之间添加了以下内容:

@csrf_field
{{ method_field('PUT') }}

结果:

此路由不支持 PUT 方法。支持的方法:GET、HEAD。


调整[form.php],改为[Route:post]

在 POST 标签之间添加了以下内容:

@csrf_field
{{ method_field('PUT') }}

结果:

此路由不支持 PUT 方法。支持的方法:POST。


调整 [form.php],保持 [Route:get] 更新为 action="/form_populating_data"

删除:

@csrf_field
{{ method_field('PUT') }}

结果:

The PUT method is not supported for this route. Supported methods: GET, HEAD. 
4

2 回答 2

1

我认为 Http Request 的工作方式存在误解。您需要一条路线将表单交付给用户:

Route::get('/form_populating_data', function () {
    return view('site_tax_declarations/form_populating_data');
});

在您的表单中,您使用路由来处理数据,例如<form action="/process-data' method="post">.

然后你需要一个带有这个端点的 post 路由:

Route::post("/process-data", function (Request $request) {
  dd($request->input());
});

Request注意:在路由处理程序中注入。

然后 POST 输入在$request->input().

编辑:您的表单字段需要name<input name="message">. 然后这些值可用于$request->input("message")

您可以在路由文档中找到其他信息:

https://laravel.com/docs/7.x/routing

于 2020-08-06T07:50:00.383 回答
-2

你应该这样做

  {{ method_field('PUT') }}
  @csrf_field

如果您使用 PUT 方法进行更新,那么您应该在 csrf 字段之前编写它。方法欺骗应该写在csrf之前。

希望它现在可以工作。

于 2020-08-06T07:53:51.613 回答