我有一个页面,我可以将管理员添加到我的论坛类别(subreddit),我可以看到已分配的现有版主的列表。两者都在同一视图create.blade.php
在每个版主旁边,我都有一个删除链接,允许subreddit的所有者同时删除版主。
但是点击它时,请给我以下错误
RouteCollection.php第161行中的NotFoundHttpException
注意:为了访问添加版主的路线,我使用此subreddit/{id}/moderators/create
我理解我的路线可能是这里的问题,这些是我使用
的路线Route::resource('subreddit', 'SubredditController');
Route::resource('subreddit.moderators', 'ModeratorsController');
这是ModeratorsController中的destroy()
方法
public function destroy(Moderator $moderator, Subreddit $subreddit)
{
$mod = Moderator::where('subreddit_id', '=', $subreddit->id)->where('user_id', '=', $moderator->id)->get();
$mod->delete();
return 'done';
}
这是视图中的删除链接
<a href="{{ action('ModeratorsController@destroy', [$moderator->id]) }}" class="btn btn-danger btn-xs"><span class="glyphicon glyphicon-remove"></span> Del</a>
我不认为以上action()
会在这里工作,因为它会将subreddit_id
替换为moderator.id
,例如subreddit/2/moderator
,其中2是主持人已取代17,这是我正在添加版主的subreddit的ID。
我也尝试过测试不同的路线,看看它是否有用,比如subreddit/{id}/moderators/{modid}/delete
,但总是得到同样的错误。
答案 0 :(得分:1)
当您使用resource
时,您需要发送DELETE HTTP request
。
如果您使用nested resource,则需要同时发送$moderator->id
和$subreddit->id
在您的情况下,您需要使用a tag
form
更改为delete method
{!! Form::open(['action' => ['ModeratorsController@destroy', $moderator->id, $subreddit->id], 'method' => 'delete']) !!}
{!! Form::submit('Delete') !!}
{!! Form::close() !!}
你可能需要做一些改变才能破坏功能
public function destroy($subreddit_id, $moderator_id)
{
$mod = Moderator::where('subreddit_id', $subreddit_id)
->where('user_id', $moderator_id)->first();
$mod->delete();
return 'done';
}
了解更多信息http://laravel.com/docs/5.1/controllers#restful-resource-controllers