方法不允许HTTP异常

时间:2018-06-13 09:30:08

标签: laravel store

以下是HTML表单的代码

<form method="POST" action={{ route('store') }} class="col s12">
        @csrf
        <div class="row">
          <div class="input-field col s6">
            <input name="task" id="task" type="text" class="validate">
            <label for="task">New Task</label>
          </div>
        </div>
        @include('partials.coworkers')
        <button type="submit" class="waves-effect waves-light btn">Add Task</button>
      </form>
      @isWorker
      <br><br><br>
      <form action="" class="col s6">
        <div class="row">
          <div class="input-field col s6">
            <select>
              <option value="" disabled selected>Send Invitation To</option>
              <option value="1">Option 1</option>
              <option value="2">Option 2</option>
              <option value="3">Option 3</option>
            </select>
            <label>Send Invitation</label>
          </div>
        </div>
        <a class="waves-effect waves-light btn">Send Invitation</a>
      </form>

这是我在控制器内部存储方法的代码。

public function store(Request $request){
        if ($request->input('task')) {
            $task = new Task;
            $task->content = $request->input('task');
            Auth::user()->tasks()->save($task);
        }
        return redirect()->back();
    }

web.php:

Route::middleware(['auth'])->group(function(){
    Route::get('/', 'CrudApp@index');
    Route::get('/store', 'CrudApp@store')->name('store');
    Route::get('/edit/{id}', 'CrudApp@edit')->name('edit');
    Route::get('/update/{id}', 'CrudApp@update')->name('update');
    Route::get('/delete/id', 'CrudApp@delete')->name('delete');
});

我想将任务存储到数据库中。一旦我点击保存MethodNotAllowedHTTPException,我就无法弄清楚如何解决问题。

2 个答案:

答案 0 :(得分:6)

首先:

php artisan route:cache 

在路径文件中的任何更改(在您的情况下为web.php)之后进行。

现在你的代码。看你用POST:

<form method="POST" action={{ route('store') }} class="col s12">

所以改变:

Route::get('/store', 'CrudApp@store')->name('store');

在:

Route::post('/store', 'CrudApp@store')->name('store');

答案 1 :(得分:0)

使用以下命令,您将获得路线列表,您可以在其中找到路线:

php artisan route:list

然后作为@Adam回答:

php artisan route:clear

php artisan route:cache

在您的查询中,我认为您正在使用资源控制器。

如果您使用资源方法,那么您不必单独编写所有路径

您也可以在一行中写下您的路线:

Route::resource('demo-segment', 'DemoController');

您也可以跳过资源控制器中的不必要方法

Route::resource('demo-segment', 'DemoController', [
    'except' => ['show', 'edit', 'update', 'destroy']  // This is not usable methods
]);

谢谢,可以帮助别人。