我有多个 Bootstrap 标签页,每个标签页执行的操作都不同。例如:
app-url/users#creat-admin-users-tab
app-url/users#creat-regular-users-tab
是否有在 Laravel 中获取包括 #tab-name 的完整 URL 的方法?
感谢您的时间。
app-url/users#creat-admin-users-tab
app-url/users#creat-regular-users-tab
是否有在 Laravel 中获取包括 #tab-name 的完整 URL 的方法?
感谢您的时间。
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
#tab-name
。 - Muhammad AtallahRoute::match
。因此,我想检查当前选项卡以执行适当的操作。我认为在这种情况下最好的方法是$request->isMethod('')
,但如果有多个POST或PUT方法,我不知道该怎么办。 - Muhammad Atallah<form>
,你可以将一种标签标识符放入此表单的隐藏字段中。如果它是一个大型表单,分布在所有选项卡上,你仍然可以使用隐藏字段,但你需要使用JavaScript更新其值(当前选项卡ID)。 - pilat没错 - 目前获得“#”的唯一方法是使用 JavaScript,例如:
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);
});
$_SERVER['HTTP_HOST'] => 当前请求的主机名。
$_SERVER['HTTP'] => 如果协议为HTTP,则设置为非空值。
$_SERVER['HTTPS'] => 如果协议为HTTPS,则设置为非空值。
$_SERVER["SERVER_PORT"] => 服务器端口。默认值为:80。
$_SERVER['REQUEST_URI'] => 访问此页面的URI;