代码之家  ›  专栏  ›  技术社区  ›  jacobdo

在laravel中修改后布线

  •  4
  • jacobdo  · 技术社区  · 7 年前

    在我的场景中,我来自以下路线:

    model/{model}/edit
    

    我正在访问路径:

    model/{model}/duplicate
    

    我复制模型并保存它

    $duplicate_model = $model->replicate();
    $duplicate_model->save();
    

    之后,我希望按照以下步骤返回编辑新模型的路线:

    return redirect()->back()->with('model' => $duplicate_model);
    

    希望它能用复制模型的id替换模型id,但事实并非如此。

    我无法访问特定的路由,因为在不同的情况下可以访问重复的路由。

    2 回复  |  直到 7 年前
        1
  •  4
  •   jacobdo    7 年前

    其中一种解决方案是获取resolve以从后面的URL中解析路由名称,如下所示,前提是所有可能的后面的路由都已命名:

    $back_route_name = app('router')->getRoutes()->match(app('request')->create(redirect()->back()->getTargetUrl()))->getName();
    

    然后按名称重定向到路由:

    return redirect()->route($back_route_name, ['template' => $duplicate_template]);
    
        2
  •  0
  •   user7116461 user7116461    7 年前

    您可以在模型中定义“path()”。 在这种情况下 /

    /模型/{model}/edit

    在模型中定义函数

    公共函数路径(){ 返回“/模型/”$此->id。”/编辑'; }

    在ThatModelController中。php

    仅仅

    返回重定向($dumplicate\u model->path());

    这应该行得通,杰弗里·韦恩使用了这个惯例。

    注: 如果使用路由模型绑定和slug path()函数应返回$this->slug而不是$this->身份证件

    推荐文章