2017-08-29 141 views
2

這是堆棧溢出中非常常見的問題。我嘗試了其中的幾個,但這些都不適用於我的場景。 我試圖通過編輯數據設置爲數據庫,但我得到了像RouteCollection.php線 NotFoundHttpException一個錯誤161edit.blade.php我通過PUT方法但檢查檢查那麼他們有顯示請求方法:GET。請幫我laravel 5.2 RouteFollection.php中的NotFoundHttpException第161行

edit.blade.php

<html> 
<body> 
    <form method="PUT" action="{{ URL::to('phonebook/update/$data->id') }}" > 
     <input type="text" hidden name="id" value="{{$data->id}}"/> 
     <input type="text" name="phoneNo" value="{{$data->phoneNo}}"/> 
     <input type="text" name="email" value="{{$data->email}}" /> 
     <input type="hidden" name="_method" value="PUT"/> 
     <input type="submit" value="Save"/> 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
    </form> 

</body> 

PhonebookController.php

public function edit($id) 
{ 
    $data = Phonebooks::find($id); 
    return view('phonebook.edit', compact('data')); 
} 

public function update(Request $request, $id) 
{ 
    echo"test"; 
} 

routes.php文件

Route::resource('student', 'StudentController'); 
Route::post('phonebook', '[email protected]'); 
Route::resource('phonebook', 'PhonebookController'); 

Route::put('phonebook/update','[email protected]'); 

回答

1

您的形式更改爲

<html> 
<body> 
<form method="POST" action="{{ route('phoneUpdate', $data->id) }}" > 
    {{ method_field('PUT') }} 
    {{ csrf_field() }} 
    <input type="text" name="phoneNo" value="{{$data->phoneNo}}"/> 
    <input type="text" name="email" value="{{$data->email}}" /> 
    <input type="submit" value="Save"/> 
</form> 
</body> 

你的路線,

Route::resource('student', 'StudentController'); 
Route::post('phonebook', '[email protected]'); 
Route::resource('phonebook', 'PhonebookController'); 

Route::put('phonebook/update/{$id}','[email protected]')->name('phoneUpdate'); 

更多NAMED ROUTES


UPDATE: 或者,因爲你使用的資源CONTRO ller,你甚至不需要指定PUT路由。資源控制器alreday爲您提供

path - phonebook/{$id} 
route name - phonebook.update 

一個PUT路線所以,你也可以改變你的形式,這樣

<html> 
<body> 
<form method="POST" action="{{ route('phonebook.update', $data->id) }}" > 
    {{ method_field('PUT') }} 
    {{ csrf_field() }} 
    <input type="text" name="phoneNo" value="{{$data->phoneNo}}"/> 
    <input type="text" name="email" value="{{$data->email}}" /> 
    <input type="submit" value="Save"/> 
</form> 
</body> 

和路線刪除put這樣的:

Route::resource('student', 'StudentController'); 
Route::post('phonebook', '[email protected]'); 
Route::resource('phonebook', 'PhonebookController'); 

更多RESOURCE CONTROLLERS

+0

非常感謝你幫助我。這是工作 – Rika

+0

很高興我能幫幫我 :) –

4

由於HTML表單只支持POST & GET方法,PUT和DELETE方法應該是通過添加_method隱藏字段來欺騙您的形式是這樣的:

<html> 
<body> 
    <form method="POST" action="{{ URL::to('phonebook/update/$data->id') }}" > 
     <input name="_method" type="hidden" value="PUT"> 
     <input `enter code here`type="text" hidden name="id" value="{{$data->id}}"/> 
     <input type="text" name="phoneNo" value="{{$data->phoneNo}}"/> 
     <input type="text" name="email" value="{{$data->email}}" /> 
     <input type="hidden" name="_method" value="PUT"/> 
     <input type="submit" value="Save"/> 
     <input type="hidden" name="_token" value="{{ csrf_token() }}"> 
    </form> 

</body> 

也是你的routes.php文件的文件似乎並沒有對/電話簿/更新條目/ {{ID}}

Route::put('phonebook/update/{id}','[email protected]');

應該做的

+0

還是得到同樣的錯誤要麼。 – Rika

+0

檢查更新。你的routes.php文件也需要改變。 –

+0

非常感謝你幫助我。改變後

id)}}」>然後工作。 – Rika

2

您需要使用窗體方法作爲POST,因爲您已在隱藏的輸入字段中指定了PUT。

<form method="POST" action="{{ URL::to('phonebook/update/$data->id') }}" > 
+0

我這樣做,但它不起作用 – Rika

+0

非常感謝你幫助我。改變後 id)}}」>然後工作 – Rika

相關問題