Laravel 5.8请求数据为空

时间:2019-10-22 10:20:12

标签: laravel

router.php

  

Route :: get('/ p00001 / edit / {center} / {id}',   'Dashboard \ Programs \ P00001Controller @ edit');   路线:: put('/ p00001 / update / {center} / {id}',   'Dashboard \ Programs \ P00001Controller @ update');

form.blade.php

<!DOCTYPE html>
<html dir="ltr" lang="zh-TW">
<body>
    <form id="mainform" action="/dashboard/programs/p00001/update/JPN/3121-111907230007" method="post" class="form-horizontal">
      {{ csrf_field() }}
      {{ method_field('put') }}
      <input type="text" value='1234' id="inpTest" name="inpTest">
      <input type="submit" name="inpSubmit">
    </form>
</body>
</html>

P00001Controller.php

public function __construct(Request $request, P00001Service $P00001Service )
{
    $this->request = $request;
}

public function update($center, $id)
{
    $data = $this->request->all();
    echo "<pre>", print_r($_POST, 1), "</pre>";
    echo "<pre>", print_r($this->request->all(), 1), "</pre>";
}

我有空数组。

我创建了一个test.php

<?php echo "<pre>", print_r($_POST, 1), "</pre>"; ?>

如果将操作更改为test.php,没关系,我可以获得$ _POST数据。

我搜索了几个小时,没有解决方案可以解决我的问题。

3 个答案:

答案 0 :(得分:1)

从构造中删除Request对象,并将其添加到更新函数中。

public function update(Request $request, $center, $id) {
      $data = $request->all();
      //code
}

编辑: 我为您添加了laravel文档的链接。

  

要通过依赖关系注入获取当前HTTP请求的实例,应在控制器方法上键入Illuminate \ Http \ Request类的提示。

访问this探索更多内容。

谢谢

答案 1 :(得分:0)

将路线命名为路线

Route::get('/p00001/edit/{center}/{id}','Dashboard\Programs\P00001Controller@edit')->name('edit'); 
Route::put('/p00001/update/{center}/{id}', 'Dashboard\Programs\P00001Controller@update')->name('update');

可见

 <form id="mainform" action="{{route('update',['center' => 'JPN','id' => '3121-111907230007'])}}" method="post" class="form-horizontal">
  {{ csrf_field() }}
  {{ method_field('put') }}
  <input type="text" value='1234' id="inpTest" name="inpTest">
  <input type="submit" name="inpSubmit">
</form>

在控制器中

public function update(Request $request,$center, $id)
{
$data = $request->all();
echo "<pre>", print_r($_POST, 1), "</pre>";
echo "<pre>", print_r($request->all(), 1), "</pre>";
}

不要在构造函数中创建请求对象...在函数定义中创建。

答案 2 :(得分:0)

我发现了问题所在。我使用LaravelLocalization包。因此,如果未提供语言环境,它将重定向!重定向后,只有url参数!!

动作应该是
/ ja-JP / dashboard / programs / p00001 / update / JPN / 3121-111907230007