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

时间:2019-07-10 08:40:39

标签: php laravel

我想询问在删除主题时如何解决此错误,我需要将其重定向回topic.index,但这是错误的

  

(缺少[Route:topic.index] [URI:topic / {id} / group]的必需参数。)

@Saga() aggregateCreated = (events$: Observable<any>): Observable<AggregateCommand> => { return events$.pipe( ofType(AggregateCreatedEvent), map(async (event: AggregateCreatedEvent) => { const result = this.queueService.sendMessage( "http://XXXXXXX", { test: "MessageContent }); await Promise.all([result]); return; }), flatMap(c => c) ); } 中显示一些代码01。

我尝试将TopicController中的$topic follow show some code 02.添加到TopicController中,并且404 not found之间的ID从“组ID”更改为已删除的“主题ID”

web.php

topic/{id}/group

01。在TopicController中

Route::get('/topic/{id}/group', 'TopicController@index')->name('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') ;     //*******
        }
    }
}

删除主题后,我需要重定向回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) ; //******* } } }

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

4 个答案:

答案 0 :(得分:0)

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

public function destroy( Topic $topic)
{

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

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

    return redirect()->back();
}

答案 1 :(得分:0)

您必须先获得groupId才能删除主题。 所以:

public function destroy( Topic $topic)
{
    if ($topic != null) {
       $groupId = $topic->group_id;
       $topic->delete();
       return redirect()->route('topic.index',$groupId) ;     //*******
    }
}

答案 2 :(得分:0)

您发布的df2 = (df.pivot_table(index=['Field1','Field2'], columns='Type', values=['Price1', 'Price2'], aggfunc='mean') .sort_index(axis=1, level=1)) df2.columns = [f'{b}-{a}' for a, b in df2.columns] df2 = df2.reset_index() print (df2) 路由包含一个参数topic.index参数是必需的。那就是01代码段中的错误。

在02片段中,您正在删除主题,然后将其重定向到已删除的主题,并尝试通过课程返回id代码来获取它

解决方案:

404 not found

答案 3 :(得分:0)

您的路线(Throwable)由topic.index处理,它需要该组的ID。因此,销毁主题时,必须将其重定向回组索引。因此,您需要在删除模型之前获取TopicController@index

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

您的代码如下:

group id

如果您使用Laravel路由显式绑定(https://laravel.com/docs/5.8/routing#explicit-binding),则不必检查主题是否存在,这是由Laravel完成的。然后,您的代码将看起来像这样,更加简洁,对吧?:

public function destroy( Topic $topic)
{
    if ($topic) {
       $group_id = $tropic->group_id;

       $topic->delete();

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

    return redirect()->back();
}