【发布时间】:2014-04-14 20:11:59
【问题描述】:
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() }}
代理控制器:
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,但是出现的错误是“找不到控制器方法”。
任何帮助我都会感激不尽。
【问题讨论】:
-
试试
AgentsController@destroy(提示:区分大小写)。另外,作为说明,我会避免使用没有任何身份验证的GET请求来删除对象。我可以很容易地编写一个程序来删除你所有的警报:) -
嗨,Sam,它仍然返回相同的错误。上面@show 的路线,无论有无大写都适用。哈,你读懂了我的想法,我也打算这样做,只是不知道怎么做!
-
嗯,尝试删除
Route::controller()行。如果您手动定义所有路由,则不需要使用 Laravel 的 RESTful 控制器方法(这会自动将GET agents/test之类的请求路由到AgentsController@GetTest)。 -
解决您的其他问题:尝试使表单 POST,然后确保发送
_method:DELETE参数。这将是一个很好的初始保护层。 -
嗨 Sam,如果我删除
Route::controller()行,我将无法访问我的 /agents/getIndex(),视图。