2016-12-01 131 views
0

這是我的形式,我認爲Laravel刪除文件NotFoundHttpException

  {!! Form::open(['url' => ['documents/{file}/{id}', $file->name, $file->id],'method' => 'delete']) !!} 
     {!! Form::token() !!} 
     {!! Form::submit('Delete') !!} 
     {!! Form::close() !!} 

中,我從數據庫原始文件刪除文件控制器

public function destroyFile($file_name, $id) 
{ 
    File::findOrFail($id)->delete(); 
    $file_path = storage_path('documents').'/'.$file_name; 
    $destinationPath = $file_path; File::delete($file_path); 
    return redirect('/documents'); 
} 

這是路線

Route::delete('documents/{file}/{id}','[email protected]'); 

當我按提交按鈕,我得到NotFoundHttpException

回答

2

嘗試使用此

{!! Form::open(['method' => 'DELETE', 'action' => ['[email protected]', $file->name, $file->id] ]) !!} 

其實,他們的答案是正確的。你需要_method被刪除。當我使用這個。 Laravel爲我做的。

或者你可以把這個表單上

<input type="hidden" name="_method" value="DELETE"> 

{!! Form::hidden('_method', 'DELETE') !!} 
0

在大多數瀏覽器中使用這種方法不可能使用html格式,大多數只支持GETPOST。 所以這個請求不起作用的原因是因爲瀏覽器發送這個GET請求,這是默認的。

GET,POSTPUTDELETE然而當使用XMLHttpRequests(ajax)時在大多數主流瀏覽器中都被支持。

0

{{ method_field('DELETE') }}添加到您的表單中。

{!! Form::open(['url' => ['documents/{file}/{id}', $file->name, $file->id],'method' => 'delete']) !!} 
{{ method_field('DELETE') }} 
{!! Form::token() !!} 
{!! Form::submit('Delete') !!} 
{!! Form::close() !!} 
+0

我插入法領域,但其同樣的錯誤 – OunknownO