如何比较 Laravel 的 url()->previous() 与 url()->current()
How to compare Laravel's url()->previous() with url()->current()
Laravel 的 url()->previous()
和 url()->current()
似乎坏了。
我无法执行 if previous == current
,因为 previous
以 http:/https: 输出并以 /
结尾,而 current
没有此输出。
我认为这不会成为问题。我可以将 http:
/https:
添加到 url()->current()
并继续我的生活,但显然不会那么简单。
问题: $url_1 != $url_2
代码:
$url_1 = url()->previous();
$url_2 = url()->current();
var_dump( $url_1 );
var_dump( $url_2 );
输出:
string(22) "http://localhost:3000/"
string(21) "//localhost:3000"
尝试修复:
代码:
$url_1 = url()->previous();
$url_2 = 'http:' . url()->current() . '/';
var_dump( $url_1 );
var_dump( $url_2 );
输出:
string(22) "http://localhost:3000/"
string(27) "http://localhost:3000/"
所以$url_1
仍然不等于$url_2
。有谁知道这里发生了什么?在我看来 http:
被视为单个字符。
我实际上如何比较两者,因为现在 $url_1
永远不会等于 $url_2
...
您可以通过检查当前 url 与前一个 url 来捕获重定向循环。
$redirect = app('redirect');
if (request()->fullUrl() != $redirect->back()->getTargetUrl()){
$response = $redirect->back();
} else {
$response = $redirect->to('/');
}
return $response
->withInput($request->except($this->dontFlash))
->withErrors('That page could not be found. Please try again or report the broken link: ' . $request->getRequestUri());
我发现 Illuminate\Routing\UrlGenerator
中的 previous()
使用了 getPreviousUrlFromSession()
,其中 returns 结果是:session()->previousUrl()
.
比较 session()->previousUrl()
和 url()->current()
确实有效。虽然我仍然很好奇为什么第一种方法不起作用。
Laravel 的 url()->previous()
和 url()->current()
似乎坏了。
我无法执行 if previous == current
,因为 previous
以 http:/https: 输出并以 /
结尾,而 current
没有此输出。
我认为这不会成为问题。我可以将 http:
/https:
添加到 url()->current()
并继续我的生活,但显然不会那么简单。
问题: $url_1 != $url_2
代码:
$url_1 = url()->previous();
$url_2 = url()->current();
var_dump( $url_1 );
var_dump( $url_2 );
输出:
string(22) "http://localhost:3000/"
string(21) "//localhost:3000"
尝试修复:
代码:
$url_1 = url()->previous();
$url_2 = 'http:' . url()->current() . '/';
var_dump( $url_1 );
var_dump( $url_2 );
输出:
string(22) "http://localhost:3000/"
string(27) "http://localhost:3000/"
所以$url_1
仍然不等于$url_2
。有谁知道这里发生了什么?在我看来 http:
被视为单个字符。
我实际上如何比较两者,因为现在 $url_1
永远不会等于 $url_2
...
您可以通过检查当前 url 与前一个 url 来捕获重定向循环。
$redirect = app('redirect');
if (request()->fullUrl() != $redirect->back()->getTargetUrl()){
$response = $redirect->back();
} else {
$response = $redirect->to('/');
}
return $response
->withInput($request->except($this->dontFlash))
->withErrors('That page could not be found. Please try again or report the broken link: ' . $request->getRequestUri());
我发现 Illuminate\Routing\UrlGenerator
中的 previous()
使用了 getPreviousUrlFromSession()
,其中 returns 结果是:session()->previousUrl()
.
比较 session()->previousUrl()
和 url()->current()
确实有效。虽然我仍然很好奇为什么第一种方法不起作用。