【问题标题】:Laravel - How can add GET parameter anytime?Laravel - 如何随时添加 GET 参数?
【发布时间】:2020-06-19 16:48:00
【问题描述】:

我有一个 Laravel 项目 (test.com)。

这是从多个站点重定向的。(test1.com, test2.com...)

重定向时,$_GET 有一个参数表明它来自哪里。

例如:test.com?from=test1test.com?from=test2

我想将“from”参数设置为test.com上的所有网址。

也就是说,在创建url的时候,要加一个“from”参数。

test.com/product/1?from=test1
test.com/product/create?from=test1
...

提前致谢。

【问题讨论】:

  • 你考虑过使用the Referer header value吗?
  • 项目已经建成。我的项目中由 route() 函数创建的所有 URL。我可以在运行 route() 函数后添加这个 'from' 参数吗?

标签: laravel redirect routes


【解决方案1】:

您可以通过previous method获取上一个网址:

url()->previous();

所以你可以通过middleware添加from参数,

像这样创建一个中间件文件:

<?php

namespace App\Http\Middleware;

use Closure;

class GetReferer
{
    /**
     * Handle the incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string  $from
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $previous = url()->previous().
        $from = parse_url($previous)['host'];
        if ($from == $request->getHost()) {
            $from = $request->session()->get('from');
        } else {
            $request->session()->put('from', $from);
        }
        $request->from = $from;
        return $next($request);
    }

}

如果您希望中间件在应用程序的每个 HTTP 请求期间运行,请在您的 app/Http/Kernel.php 类的 $middleware property 中列出中间件类。

【讨论】:

  • 谢谢,但第一次请求记住“from”参数,下一个 url 忘记“from”参数。
  • @DaranyKhiev 你可以试试session() 来存储from
  • 是的,很遗憾我不能在这部分使用会话。
猜你喜欢
  • 2020-06-12
  • 1970-01-01
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多