【问题标题】:How to store variable from option value to controller and save it in database with Laravel?如何将变量从选项值存储到控制器并使用 Laravel 将其保存在数据库中?
【发布时间】:2017-11-09 21:19:56
【问题描述】:

我正在尝试将变量从我的视图保存到控制器,然后将其保存在数据库中,但我得到 MethodNotAllowedHttpException。

这是我的看法

<form method="POST" action="{{ route('absensi.store') }}">

      <div class="form-group">
        <label name="nim"><h3>NIM :</h3></label> &nbsp;
        <select name ="mahasiswasn" class="selectpicker" data-live-search="true" data-width="500px" title="Choose the Student Number">
        @foreach($nim as $nm)
          <option value="{{ $nm->nim }}">{{ $nm->nim}}</option>
        @endforeach
      </select>
      </div>

      <div class="form-group">
        <label name="matkul"><h3>&nbsp;MK :</h3></label> &nbsp;
        <select name ="matkulsn" class="selectpicker" data-live-search="true" data-width="500px" title="Choose the subject">
        @foreach($matkul as $mkl)
          <option value="{{ $mkl->nama }}">{{ $mkl->nama}}</option>
        @endforeach
      </select>
      </div>

      <div class="form-group">
        <label name="hari">Hari :</label>
        <input id="hari" name="hari" class="form-control">
      </div>

      <div class="form-group">
        <label name="status">Status :</label>
        <input id="status" name="status" class="form-control">
      </div>

      <input type="submit" value="Add Absensi " class="btn btn-success btn-lg btn-block">
      <input type="hidden" name="_token" value="{{ Session::token() }}">

    </form>

我的控制器(AbsensiController)

public function store(Request $request)
    {
           $this->validate($request,array(
                'nim' =>'required',
                'matkul' =>'required',
                'hari' =>'required',
                'status' =>'required'
                ));

            //store in database
            $post = new PostAbsensi;

            $post->nim = $request->get('mahasiswasn');
            $post->mk = $request->get('matkulsn');
            $post->hari = $request->get('hari');
            $post->status = $request->get('status');

            $post->save();

            Session::flash('success','data successfully saved!');

            return redirect()->route('absensi.show', $post->id);
    }

我的路线:

Route::resource('absensi','AbsensiController');

请帮忙,感谢您的关注。

编辑:

这是我的另一个观点(IndexAbsensi)

<form method="POST" action="{{ url('absensi.create') }}">
                      <input type="submit" value=" + Tambah Absensi " class="btn btn-success btn-lg btn-block">
                      <input type="hidden" name="_token" value="{{ csrf_token() }}">
  </form>

所以我的想法是,当我按下按钮时,它将转到 AbsensiController@create,然后返回我的表单视图,但是我也因此得到 Methodnotallowedhttpexception。

【问题讨论】:

  • 另外,请确保您的问题不是来自您的 routes.php 文件:laravel.com/docs/5.2/…
  • 我会说你的路线有问题,你能把你的整个文件贴出来让我们看看吗?
  • @lesssugar 我检查了我的路线文件,但找不到任何问题。我只是使用“Route::resource('absensi','AbsensiController');”为此。
  • @rosscooper 这是我唯一的路线,另一条与 Route::get('/home', 'HomeController@index')->name('home'); 无关等

标签: laravel laravel-5 routes


【解决方案1】:

你可以试试

public function store(Request $request)
{
       $this->validate($request,array(
            'nim' =>'required',
            'matkul' =>'required',
            'hari' =>'required',
            'status' =>'required'
            ));

        //store in database
        $post = new PostAbsensi;

        $post->nim = $request->mahasiswasn;
        $post->mk = $request->matkulsn;
        $post->hari = $request->hari;
        $post->status = $request->status;

        $post->save();

        Session::flash('success','data successfully saved!');

        return redirect()->route('absensi.show', $post->id);
}

我不知道是否可以通过 $request->get("") 获取 post 请求变量

【讨论】:

    【解决方案2】:

    @Ahmad 你错了 store 方法使用了 post 路由。见https://laravel.com/docs/5.4/controllers#restful-partial-resource-routes

    @Riki 代码中的每件事看起来都很好,也许你正在覆盖路由或路由的 naem 或类似的东西。 你能通过这个运行php artisan route:list吗?你可以看到这条路线是哪种方法。

    或者你可以使用&lt;form method="POST" action="{{ url('absensi') }}"&gt;

    在控制器中你也可以使用

    $this->validate($request->all(),array(
                'nim' =>'required',
                'matkul' =>'required',
                'hari' =>'required',
                'status' =>'required'
                )); 
    

    【讨论】:

    • 嗨@Usman Sharif 感谢您的回复,但是我尝试使用“
      ”进行更改,但仍然无法正常工作.以前我也确实像那样更改了控制器,但仍然没有运气。
    • 你试过php artisan route:list吗?它为路线 absensi.store 显示什么方法?
    • 哦,奇怪,你能不能尝试将路线的名称从 absensi 更改为像 absensi_1 这样的独特名称,因为我能猜到的唯一原因是你路线被覆盖。
    【解决方案3】:

    谢谢大家,我终于找到了解决方案。这很奇怪,但在我看来,laravel 可能只是执行一些注释的表单代码。我根本没想到。我删除了注释代码,它运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多