公共目录中的资产未在Laravel 5中显示

时间:2017-09-05 08:27:23

标签: php css laravel assets

我在Laravel 5.4和Laravel 5.5的 / public 目录中遇到资产问题。

在Laravel的全新安装中,如果网址中没有 / public ,公共目录中的任何内容都无效。

当我运行php artisan make:auth时,创建的视图应该是完美的,对吧?好吧,我得到的是一个没有样式的页面,当我使用DOM检查器添加 / public 时,它看起来很漂亮,所以我最终得到:

<link href="http://localhost/l5.4/public/css/app.css" rel="stylesheet">

我可以在哪里更改设置,以便每次要链接到资源时都不必在视图中添加 / public

5 个答案:

答案 0 :(得分:2)

您不必手动执行此操作,laravel附带了一个函数:StartPage这直接访问公用文件夹。

注意:

如果这不起作用那么你可能需要设置一个指向你{{asset('css/app.css')}}文件夹的virtualHost。 您可以在Apache上的vHosts文件中执行此操作。

<强>注2:

如果您在每个示例中使用共享主机,或者由于某种原因而无法修改您的vHost文件,那么这就是您所拥有的解决方案。

首先,您必须将公共文件夹放在项目文件夹上方并按照示例public_folder重命名,在其中,您必须放置公用文件夹的内容。

/public

其次,在公共文件夹中,您将找到一个名为/public_folder /your_project_folder app/ databases/ ... 的文件,您必须按如下方式对其进行修改:

index.php

这意味着您正在从我们上面创建的公共文件夹中引用项目文件夹。

<强>注3:

要告诉laravel将从公共文件夹的新位置引用资产功能,您可以在require __DIR__.'/../your_project_folder/bootstrap/autoload.php'; $app = require_once __DIR__.'/../your_project_folder/bootstrap/app.php'; 之后将其添加到index.php:

$app=require_once...

希望它有意义

答案 1 :(得分:1)

这对我有用: 致url config\app.php我输入public目录的完整网址,如下所示:

'url' => env('APP_URL', 'http://localhost/l5.5/public'),

我还在APP_URL文件中输入了.env的相同网址,因为这是我用于配置的内容。 在构造文件URL时,显然asset()和类似的函数会附加到配置文件中的URL

<强>更新 这样做的问题是我现在必须编辑Illuminate\Foundation\helpers.php,我认为这是一个坏主意。我认为不应该触及核心文件。 而不是

function asset($path, $secure = null)
{
    return app('url')->asset($path, $secure);
}

我正在使用

function asset($path)
{
    return config('app.url'). '/' .$path;
}

有人可以告诉我这样做的正确方法吗?

答案 2 :(得分:0)

在根文件夹中将 server.php 重命名为 index.php ,并将 .htaccess 文件从公用文件夹复制到根文件夹。还要共享您的目录结构,以显示您的资产所在的位置。

答案 3 :(得分:0)

就这样做

<link href="{{ asset('css/app.css') }}" rel="stylesheet">

答案 4 :(得分:0)

Private Sub txtItem_TextChanged(sender As Object, e as EventArgs) Handles txtItem.TextChanged

    Me.btnAddItem.Enabled = Not String.IsNullOrWhitespace( Me.txtItem.Text )

End Sub

这很好用。当Laravel在服务器上运行时,主索引文件和所有资产都在“公共目录”中。所以css资产文件将以域名+ css / file.css而不是domain / public / css / file.css开头。