如何使用Laravel将数据插入数据库

时间:2018-11-12 04:43:27

标签: php laravel laravel-5

我正在尝试将数据从表单插入数据库。

我用于创建数据的URL为web.com/siswa/create

但是当我单击“提交系统”时,显示错误 MethodNotAllowedHttpException

我该如何解决?我的代码有什么问题吗?

这是我的表格:

<form action="{{ url('siswa') }}" method="POST">
      <div class="form-group">
         <label for="exampleInputEmail1">NISN</label>
          <input type="text" class="form-control" name="nisn" id="nisn" placeholder="NISN"></div>
         <div class="form-group">
         <label for="exampleInputEmail1">Nama Siswa</label>
         <input type="text" class="form-control" name="nama_siswa" id="nama_siswa" placeholder="Nama Siswa"> </div>
         <button type="submit" class="btn btn-success btn-sm font-weight-bold">Submit</button></form>

控制器:

public function tambah()
    {
      return view('siswa.create');
    }

    public function store(Request $request)
      {

        $siswa = new \App\Siswa;
        $siswa->nisn = $request->nisn;
        $siswa->nama_siswa = $request->nama_siswa;
        $siswa->tanggal_lahir = $request->tanggal_lahir;
        $siswa->jenis_kelamin = $request->jenis_kelamin;
        $siswa->save();
        return redirect('siswa');
      }

路线:

Route::get('/siswa/create', [
    'uses' => 'SiswaController@tambah',
    'as' => 'tambah_siswa'
]);

Route::get('/siswa', [
    'uses' => 'SiswaController@store',
    'as' => 'simpan_siswa'
]);

5 个答案:

答案 0 :(得分:4)

store的功能路线从get更改为post

Route::post('/siswa', [
'uses' => 'SiswaController@store',
'as' => 'simpan_siswa'
]);

在表单中使用Csrf保护字段以防止会话超时错误

{{ csrf_field() }}

OR

<input type="hidden" name="_token" id="csrf-token" value="{{ Session::token() }}" />

或者如果您使用的是表单生成器

{!! Form::token() !!}

答案 1 :(得分:3)

在路线中,请使用post代替get

Route::post('/siswa','SiswaController@store');

,并且还包括

形式的{{ csrf_field() }}

答案 2 :(得分:0)

您在表单上使用"../node_modules/chart.js/dist/Chart.js", "../node_modules/chart.js/dist/Chart.bundle.js", "../node_modules/chart.js/dist/Chart.min.js", "../node_modules/chart.js/dist/Chart.bundle.min.js" import { Chart } from 'chart.js'; import { ChartModule } from 'primeng/primeng'; ,但在您的路线中使用df = pd.read_csv(file, header=None, error_bad_lines=False)

method="POST"用于您的路线

答案 3 :(得分:0)

在您的表单中,您提供了POST方法,但您的路由器没有任何POST处理程序。因此,您所要做的就是,当您尝试将数据从表单存储到DB时,您必须发布数据,并且路由器应进行处理。

尝试一下

Route::get

答案 4 :(得分:0)

您正在表单中使用POST方法,并且在路由中使用GET。

尝试

Route::post( '/siswa', [
    'uses' => 'SiswaController@store',
    'as'   => 'simpan_siswa'
] );