当我删除一个需要重定向回topic.index的主题时,我想问如何修复这个错误,但它是错误的
(缺少路由所需的参数:topic.index。)
下面显示一些代码01。在TopicController
中。
我尝试在$topic follow show some code 02.
中添加TopicController
,在topic/{id}/group
之间变成404 not found
和id,从组的id改为已删除的主题id
在web.php
Route::get('/topic/{id}/group', 'TopicController@index')->name('topic.index');
01。在TopicController中
class TopicController extends Controller
{
public function index($id)
{
$group = Group::findOrFail($id);
$topics = Topic::where('group_id', $id)->orderBy('created_at', 'desc')->paginate(5);
return view('topic.index', compact('group', 'topics'));
}
public function destroy( Topic $topic)
{
if ($topic != null) {
$topic->delete();
return redirect()->route('topic.index') ; //*******
}
}
}
02。在TopicController中
class TopicController extends Controller
{
public function index($id)
{
$group = Group::findOrFail($id);
$topics = Topic::where('group_id', $id)->orderBy('created_at', 'desc')->paginate(5);
return view('topic.index', compact('group', 'topics'));
}
public function destroy( Topic $topic)
{
if ($topic != null) {
$topic->delete();
return redirect()->route('topic.index',$topic) ; //*******
}
}
}
删除主题后,我需要重定向回topic.index
我希望有人能帮助我,我希望你能理解我的信息
发布于 2019-07-10 09:17:51
您的路由(topic.index
)由TopicController@index
处理,它需要组的id。因此,当您破坏主题时,您必须将其重定向回组索引。为此,您需要在删除模型之前获得group id
。
您试图从最近删除的对象/模型重定向到路由,这是不可能的。
您的代码如下所示:
public function destroy( Topic $topic)
{
if ($topic) {
$group_id = $tropic->group_id;
$topic->delete();
return redirect()->route('topic.index', $group_id);
}
return redirect()->back();
}
如果使用Laravel路由显式绑定(https://laravel.com/docs/5.8/routing#explicit-binding),则不必检查主题是否存在,这是由Laravel完成的。然后你的代码会看起来像这样,更干净,对吧?:
public function destroy(Topic $topic)
{
$group_id = $tropic->group_id;
$topic->delete();
return redirect()->route('topic.index', $group_id);
}
发布于 2019-07-10 08:45:33
您正在尝试重定向回您刚刚删除的主题,这是没有意义的,您还需要组的$id
,而不是来自主题,因此尝试以下操作:
public function destroy( Topic $topic)
{
if ($topic) {
$group = $tropic->group_id;
$topic->delete();
return redirect()->route('topic.index', $group);
}
return redirect()->back();
}
发布于 2019-07-10 08:45:37
在删除主题之前,必须先获得groupId
。因此:
public function destroy( Topic $topic)
{
if ($topic != null) {
$groupId = $topic->group_id;
$topic->delete();
return redirect()->route('topic.index',$groupId) ; //*******
}
}
https://stackoverflow.com/questions/56966729
复制相似问题