【问题标题】:modify back route in laravel在 laravel 中修改返回路径
【发布时间】:2018-06-15 11:08:24
【问题描述】:

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

model/{model}/edit

我正在访问路线:

model/{model}/duplicate

我复制模型并存储它

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

之后,我希望通过以下方式返回编辑新模型的路线:

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

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

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

【问题讨论】:

  • 后面的路线是什么意思?就像按下后退按钮一样?因为这不是浏览器的工作方式。
  • 我的意思是 laravel redirect()->back() 方法

标签: php laravel laravel-5 routing


【解决方案1】:

其中一个解决方案是像这样从返回 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】:

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

    /model/{model}/edit

    在你的模型中定义一个函数

    公共函数路径(){ 返回 '​​/model/' 。 $this->id 。 '/编辑'; }

    在您的 ThatModelController.php 中

    简单

    返回重定向($dumplicate_model->path());

    应该可以,Jeffery Way 使用这个约定。

    注意:如果您使用路由模型绑定和使用 slug path() 函数应该返回 $this->slug 而不是 $this->id

    【讨论】:

      猜你喜欢
      • 2015-11-04
      • 1970-01-01
      • 2019-01-23
      • 2019-11-24
      • 2023-01-04
      • 2011-03-28
      • 1970-01-01
      • 2014-03-05
      • 1970-01-01
      相关资源
      最近更新 更多