Вопрос

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