RESTful Laravel控制器没有拾取Destroy()方法

时间:2014-04-14 20:12:00

标签: php laravel destroy

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

表格删除'通知':

{{ 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文件: / *代理商的路线* /

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

我正确引用了用户按下删除时调用的URL,但是,显示的错误是“找不到控制器方法”。

任何我感恩的帮助。

1 个答案:

答案 0 :(得分:2)

您应该对资源执行DELETE。

如果您有包含唯一网址agents/alert/{id}的提醒,则应在同一网址上执行DELETE方法。

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

创建一个可以提交以删除资源的表单:

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

有关RESTful控制器的更多信息here

还尝试使用named routes代替action