문제

Structure: views/agents/alert/index.blade.php

Form to delete 'notification':

{{ Form::open(
    array('url'=>'agents/alert/delete/'. $alerts->id, 'role'=>'form')) }}
{{ Form::hidden('_method', 'DELETE') }}
    <button type="submit" class="btn btn-warning" id="archive">Archive</button>
{{ Form::close() }}

AgentsController:

public function destroy($id)
    {
        $alert = Alert::find($id);
        $alert->delete();

        return Redirect::to('/agents/')
        ->with('message-success', 'Your alert was successfully archived.');
    }

Routes.php: /* Agent's Route */

Route::get('agents/alert/{id}', 'AgentsController@Show');
Route::get('agents/alert/delete/{id}', 'AgentsController@Destroy');
Route::controller('agents', 'AgentsController');

I am correctly referencing the URL called when the user presses delete, however, the error presented is 'Controller Method Not Found'.

Any help I'd be thankful of.

도움이 되었습니까?

해결책

You should perform a DELETE on a resource.

If you have an alert with a unique URL agents/alert/{id} you should do a DELETE method on the same URL.

Route::delete('agents/alert/{id}', 'AgentsController@Destroy');

Create a form that can be submitted to delete the resource:

{{ Form::open(array('method' => 'DELETE', 'action' => array('AgentsController@Destroy', $alert->id))) }}

More information on RESTful controllers here.

Also try to use named routes instead of action.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top