在 laravel 5.1 中获取 fullUrl
Posted
技术标签:
【中文标题】在 laravel 5.1 中获取 fullUrl【英文标题】:Get fullUrl in laravel 5.1 【发布时间】:2016-02-14 17:23:57 【问题描述】:我有多个引导选项卡,其中每个选项卡都与其他选项卡执行不同的操作,例如
app-url/users#creat-admin-users-tab
app-url/users#creat-regular-users-tab
Laravel 有什么方法可以获取完整的 url,包括#tab-name
感谢您的宝贵时间。
【问题讨论】:
现在我需要 url 而不是我的所有服务器信息 现在你想从哪里得到它?比如你想在刀片中使用它还是在你的 jquery 中的某个地方使用它? 【参考方案1】:Laravel 具有返回当前 url 的功能。全部在本页指定:http://laravel.com/api/5.0/Illuminate/Http/Request.html
你要找的是Request::fullUrl()
。
假设我在 http://laravel.dev/test?test=1,下面是方法和结果:
Request::fullUrl()
// Returns: http://laravel.dev/test?test=1
Request::url()
// Returns: http://laravel.dev/test
Request::path()
// Returns: test
Request::root()
// Returns: http://laravel.dev
【讨论】:
我在返回所有 url 但没有#tab-name
之前使用它
服务器不知道#后面是什么内容,仅供用户使用。你必须自己附加它。
使用Route::match
的所有选项卡包括在一条路线中所以我想检查当前选项卡以执行正确的操作我认为在这种情况下最好的方法是$request->isMethod('')
但我不如果有多个 post 或 put 方法,知道我该怎么做。
您无法在后端检查#
值。你可以用javascript做些什么。
@JustUser 如果您在每个选项卡上都有单独的<form>
,您可以将一种选项卡标识符放入此表单的隐藏字段中。如果它是一个大型表单,分布在所有选项卡上,您仍然可以使用隐藏字段,但您需要使用 JavaScript 更新其值(当前选项卡 ID)。【参考方案2】:
检查以下内容
$_SERVER['HTTP_HOST'] => Host name from the current request.
$_SERVER['HTTP'] => Set to a non-empty value if the protocol is HTTP
$_SERVER['HTTPS'] => Set to a non-empty value if the protocol is HTTPS
$_SERVER["SERVER_PORT"] => Server port. Default is: 80
$_SERVER['REQUEST_URI'] => The URI to access this page;
【讨论】:
警告:坏主意。任何以“HTTP_”开头的都是客户端发送的,不要依赖它。【参考方案3】:这是真的 - 目前获得“#”的唯一方法是使用 js,例如像这样:
var hash = window.location.hash;
var tabName1 = '#creat-admin-users-tab';
var tabName2 = '#creat-regular-users-tab';
if (hash.indexOf(tabName1) !== -1) console.log("It's creat-admin-users-tab");
else if (hash.indexOf(tabName2) !== -1) console.log("It's creat-regular-users-tab");
这可以帮助您处理 url 的其他部分(将其添加到您的路由文件中):
use Illuminate\Http\Request;
Route::get('/app-url/users', function (Request $request)
$fullUrl = $request->fullUrl();
var_dump($fullUrl);
);
【讨论】:
以上是关于在 laravel 5.1 中获取 fullUrl的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Laravel 5.1 在 IronMQ 中获取排队作业的数量?
在 Laravel 5.1 中获取“找不到类 'app\Http\Controllers\Controller'”