我真的对此做了很多研究,但似乎这一次与其他几次不同。所以..。我现在有一个项目文件夹todo-oop
,我只想得到这个项目的确切位置/url,所以,我想得到http://localhost/todo-oop/
。
代码:
<?php
$project_folder = explode('\\', dirname(__FILE__));
$root_directory = $_SERVER['SERVER_NAME'] . '/' . end($project_folder);
?>
输出:
localhost/partials/css/todo.css
如果我检查视图源代码并单击url,它将返回错误的url:http://localhost/todo-oop/localhost/partials/css/todo.css
发布于 2018-05-31 17:00:35
PHP最棒的一件事就是你可以阅读源代码。如果你想知道asset()
函数是如何工作的,你可以直接阅读代码!
// Illuminate/Foundation/helpers.php
function asset($path, $secure = null)
{
return app('url')->asset($path, $secure);
}
因此,您需要为asset
函数提供一个路径,指向您想要包含的内容。asset
函数依次将其提供给容器实例来解析( app()
),然后Laravel开始施展魔法。简而言之,它只是尝试将正确的URL解析为您给定的路径。
Laravel的缺点是它使用了很多神奇的代码来防止样板。这通常很有用,但可能会让人很难看到内部发生了什么。框架通常在样板和魔术之间进行权衡,Laravel倾向于在任何可能的情况下放弃样板。
现在回答
Laravel做得非常聪明的是,只要有人连接到你的应用程序,你就可以设置一个属性/全局/变量。
// bootstrap/app.php
$app = new Illuminate\Foundation\Application(
realpath(__DIR__.'/../')
);
// Illuminate/Foundation/Application
public function __construct($basePath = null)
{
if ($basePath) {
$this->setBasePath($basePath);
}
}
现在,您可以通过调用base_path()
帮助器,从应用程序中的任何位置访问此路径(即项目根目录)。它实际上返回了我们刚刚设置的确切路径:
function base_path($path = '')
{
return app()->basePath().($path ? DIRECTORY_SEPARATOR.$path : $path);
}
希望这个答案能对你有所帮助!
发布于 2018-05-31 11:35:57
尝尝这个
<?php echo "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'].'/'; ?>
根据这个answer,希望这能起作用。
https://stackoverflow.com/questions/50616198
复制相似问题