2014-02-18 2 views
0

데이터베이스 및 대상 폴더에 파일을 저장하는 laravel을 사용하는 응용 프로그램에서 작업하고 있습니다. 데이터베이스에서 레코드를 삭제하려고하는데 컨트롤러 메서드를 찾을 수 없다는 오류가 표시됩니다.Laravel 4 - 컨트롤러를 찾을 수 없습니다.

에러 :

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException 
Controller method not found. 

throw new NotFoundHttpException("Controller method not found."); 

뷰 alluploads.blade.php가이 업로드에 ID를 전달한다 형태를 갖고/기능을 파괴한다.

{{ Form::open(array('method' => 'DELETE', 'url' => array('uploads/destroy', $upload->id))) }} 
    {{ Form::submit('Delete', array('class' => 'btn btn-danger')) }} 
{{ Form::close() }} 

내 컨트롤러에는 행을 삭제하는 기능이 있습니다.

public function getDestroy($id) 
{ 
    $this->upload->find($id)->delete(); 
    return Redirect::to('uploads/alluploads')->with('message', 'Thanks, delete was successful!'); 
} 

라우트

그래서 컨트롤러 방법이어야의

Route::controller('uploads', 'UploadsController'); 

답변

3

당신은 HTTP 메소드가 삭제 사용하는 업로드 컨트롤러에서 액세스 기능에 다음이 있습니다 :

public function deleteDestroy($id) 
{ 
    $this->upload->find($id)->delete(); 
    return Redirect::to('uploads/alluploads')->with('message', 'Thanks, delete was successful!'); 
} 

가보세요 귀하의 경로에서 :

php artisan routes 

당신이이 같은 적어도 뭔가를 참조해야합니다

Form::open(array('method' => 'GET', 'url' => array('uploads/destroy', $upload->id))) 

을하지만 내가 더 나은 것 같아요 :

+--------+---------------------------------------------------------------+----------------------+-------------------------------------------------------+--------------------------------+---------------+ 
| Domain | URI               | Name     | Action            | Before Filters     | After Filters | 
+--------+---------------------------------------------------------------+----------------------+-------------------------------------------------------+--------------------------------+---------------+ 
|  | DELETE uploads/destroy/{one?}/{two?}/{three?}/{four?}/{five?} |      | [email protected]      |        |    | 
|  | GET uploads/{_missing}          |      | [email protected]      |        |    | 
+--------+---------------------------------------------------------------+----------------------+-------------------------------------------------------+--------------------------------+---------------+ 

이 양식은 양식 인 방법을 사용하려면 오픈 라인이 될 것이다 현재의 방식대로, 메소드의 이름을 바꿉니다.

+0

Antonio의 답변에 감사드립니다. 나는 터미널에서 php arisan route로 작업하고 있으며 매우 도움이된다. 나는 deleteDestroy가 작동한다는 것을 몰랐다. 다시 한 번 감사드립니다! – cch

+0

도움이 되셨습니까? http://laravel.com/docs/controllers. 그리고 만약 내가 그것을 삭제하는 대신 get 메서드를 가지고 내 양식 열기 라인을 변경합니다 여전히 내게 오류를 제공합니다. 모두, 당신이 제안한대로 방법 이름을 바꾸는 것이 었습니다. – cch

1

먼저 업로드/삭제 대신 가지고있는 것을 시도해보십시오. 삭제에 대한 경로 이름은 resource.destroy하지만 URL을 업로드 인덱스 삭제 동사 여기

호출 자원/{ID} 내가 삭제 버튼을 $ 경우 업로드를 만들 내 양식을 열 방법 임

@foreach($uploads as $upload) 
    {{ Form::model($upload, array('url' => 'uploads/'. $upload->id, 'method' => 'delete')) }} 
    {{ Form::submit('delete') }} 
    {{ Form::close() }} 
@endofreach 
관련 문제