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