Pregunta

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.

¿Fue útil?

Solución

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top