首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >缺少[路由: topic.index] [URI: topic/{id}/group]所需的参数

缺少[路由: topic.index] [URI: topic/{id}/group]所需的参数
EN

Stack Overflow用户
提问于 2019-07-10 08:40:39
回答 4查看 197关注 0票数 2

当我删除一个需要重定向回topic.index的主题时,我想问如何修复这个错误,但它是错误的

(缺少路由所需的参数:topic.index。)

下面显示一些代码01。在TopicController中。

我尝试在$topic follow show some code 02.中添加TopicController,在topic/{id}/group之间变成404 not found和id,从组的id改为已删除的主题id

web.php

代码语言:javascript
运行
复制
Route::get('/topic/{id}/group', 'TopicController@index')->name('topic.index');

01。在TopicController中

代码语言:javascript
运行
复制
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中

代码语言:javascript
运行
复制
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

我希望有人能帮助我,我希望你能理解我的信息

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-10 09:17:51

您的路由(topic.index)由TopicController@index处理,它需要组的id。因此,当您破坏主题时,您必须将其重定向回组索引。为此,您需要在删除模型之前获得group id

您试图从最近删除的对象/模型重定向到路由,这是不可能的。

您的代码如下所示:

代码语言:javascript
运行
复制
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完成的。然后你的代码会看起来像这样,更干净,对吧?:

代码语言:javascript
运行
复制
public function destroy(Topic $topic)
{
    $group_id = $tropic->group_id;

    $topic->delete();

    return redirect()->route('topic.index', $group_id);
}
票数 0
EN

Stack Overflow用户

发布于 2019-07-10 08:45:33

您正在尝试重定向回您刚刚删除的主题,这是没有意义的,您还需要组的$id,而不是来自主题,因此尝试以下操作:

代码语言:javascript
运行
复制
public function destroy( Topic $topic)
{

    if ($topic) {
       $group = $tropic->group_id;

       $topic->delete();
       return redirect()->route('topic.index', $group);
    }

    return redirect()->back();
}
票数 0
EN

Stack Overflow用户

发布于 2019-07-10 08:45:37

在删除主题之前,必须先获得groupId。因此:

代码语言:javascript
运行
复制
public function destroy( Topic $topic)
{
    if ($topic != null) {
       $groupId = $topic->group_id;
       $topic->delete();
       return redirect()->route('topic.index',$groupId) ;     //*******
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56966729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档