2016-07-07 42 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

相关问题