2016-07-07 30 views
0

我試着去POST數據到我的控制器,但我得到一個Laravel 5.1試圖發佈數據,控制器,但歌廳MethodNotAllowedHttpException錯誤

MethodNotAllowedHttpException in RouteCollection.php line 219:

錯誤信息,這裏有我的文件。

我的路線文件

<?php 

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

// Authentication routes 
Route::get('auth/login', 'Auth\[email protected]'); 
Route::post('auth/login', 'Auth\[email protected]'); 
Route::get('auth/logout', 'Auth\[email protected]'); 

// Registration routes 
Route::get('register', 'Auth\[email protected]'); 
Route::post('auth/register', 'Auth\[email protected]'); 
Route::controllers(['password' => 'Auth\PasswordController',]); 

Route::get('/home', '[email protected]'); 

// Using A Route Closure 
Route::get('profile', ['middleware' => 'auth', function() { 
    // Only authenticated users may enter... 
    Route::auth(); 
}]); 

// practicing using forms for sending data to the DB & populating form fields with DB data 
Route::get('profile', '[email protected]'); 
Route::post('profile/update', '[email protected]'); 

profile.blade.php

<form method="POST" action="/profile/update/"> 
    <div class="form-group hidden"> 
     <input type="hidden" name="id" value="<?php echo $users[0]->id;?>"> 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
     <input name="_method" type="hidden" value="PATCH"> 
    </div> 
    <div class="form-group"> 
     <label for="email"><b>Name:</b></label> 
     <input type="text" name="name" placeholder="Please enter your email here" class="form-control"/> 
    </div> 
    <div class="form-group"> 
     <label for="email"><b>Email:</b></label> 
     <input type="text" name="email" placeholder="Please enter your email here" class="form-control"/> 
    </div> 
    <div class="form-group"> 
     <button type="submit" class="btn btn-default"> Submit </button> 
    </div> 
</form> 

&我ProfileController.php

<?php 

namespace App\Http\Controllers; 

use Auth; 
use App\User; 
use Illuminate\Http\Request; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 

class ProfileController extends Controller 
{ 
    /** 
    * Update user profile & make backend push to DB 
    **/ 

    public function index() 
    { 
     if(Auth::check()) { 
      // connecting to the DB and accessing 
      $users = User::all(); 
      //var_dump($users); 

      return view('profile', compact('users')); 
     } 

     return view('auth/login'); 
    } 

    public function updateProfile(Requests $request) { 

     return $request->all(); 

    } 
} 

不知道是什麼問題。感謝所有幫助大家

+0

@MarcoAurélioDeleu更新了我的問題 –

+0

@MarcoAurélioDeleuim jsut嘗試'POST'讀某處我需要添加'PATCH'? –

+0

@MarcoAurélioDeleuive更新了我的路線到'route :: patch',但同樣的錯誤 –

回答

1

,我們設法解決此一對夫婦的問題:

過量使用HTTP動詞

在你看來,你必須:<form method="POST"<input name="_method" type="hidden" value="PATCH">這可能POSTPATCH之間的衝突。由於您的routes.php僅聲明POST,因此我們刪除patch定義。

路由錯誤在你看來

而且,你的行動點action="/profile/update/",而你的路線被定義爲Route::post('profile/update'),發現在你的形式結束了額外/。那斜線不應該在那裏。

控制器請求

你有一個在這裏:use App\Http\Requests;可能不正確,因爲這是內Laravel一個文件夾,而不是一類。我們現在刪除它並保留use Illuminate\Http\Request;。在不久的將來,您將學習如何創建自己的表單請求,您可能需要UpdateProfileRequest.php

相關問題