Активы в публичном каталоге не отображаются в Laravel 5

У меня проблемы с активами в / общественности каталог в Laravel 5.4 и Laravel 5.5.

На новой установке Laravel ничто в общедоступном каталоге не будет работать без / общественности в URL.

Когда я бегу php artisan make:authсоздаваемые виды должны быть идеальными, верно? Что ж, я получаю нестандартную страницу, которая выглядит красиво только тогда, когда я использую инспектор DOM для добавления / общественности так что я в итоге:

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

Где я могу изменить настройки, чтобы мне не нужно было добавлять / общественности в представлениях каждый раз, когда я хочу связать с активом?

1

Решение

Вам не нужно делать это вручную, есть функция, поставляемая с laravel: {{asset('css/app.css')}} этот доступ напрямую к общедоступной папке.

Замечания:

Если это не сработает, вероятно, вам нужно настроить виртуальный хост, который будет указывать на вас. /public папка.
Вы можете сделать это в вашем файле vHosts на Apache.

Заметка 2:

Если вы используете общий хостинг для каждого примера или не можете изменить файл vHost по той или иной причине, вот решение, которое вы получили.

Во-первых, вы должны поместить свою общую папку над папкой проекта и переименовать ее, например, в public_folder, внутри нее вы должны будете поместить содержимое общей папки.

/public_folder
/your_project_folder
app/
databases/
...

Во-вторых, в общей папке вы найдете файл с именем index.php Вы должны изменить его следующим образом:

require __DIR__.'/../your_project_folder/bootstrap/autoload.php';
$app = require_once __DIR__.'/../your_project_folder/bootstrap/app.php';

Это означает, что вы ссылаетесь на папку проекта из общей папки, которую мы создали выше.

Заметка 3:

Чтобы сообщить laraevl, что на функцию актива будет ссылаться из нового расположения нашей общей папки, вы можете добавить это в ваш index.php после $app=require_once... :

$app->bind('path.public', function() {
return __DIR__;
});

Надеюсь, это имеет смысл

2

Другие решения

Вот что сработало для меня:
к url в config\app.php Я ввел полный URL к public каталог, как это:

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

Я также ввел тот же URL для APP_URL в .env файл, потому что это то, что я использую для конфигурации.
По-видимому asset() и аналогичные функции добавляются к URL в файле конфигурации при создании файла URL

ОБНОВИТЬ:
Проблема с этим заключается в том, что теперь мне нужно редактировать Illuminate\Foundation\helpers.php что я считаю плохой идеей. Я считаю, что основные файлы не должны быть затронуты.
Сейчас вместо

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

я использую

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

Может кто-нибудь сказать мне правильный способ сделать это?

1

В корневую папку переименовать server.php в index.php и скопировать .Htaccess файл из общей папки в корневую папку. Также поделитесь своей структурой каталогов, чтобы показать, где находятся ваши активы.

0

просто сделай это

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

Это работает просто отлично. Когда Laravel запускается на сервере, основной файл индекса и все ресурсы находятся в «общедоступном каталоге». Таким образом, файлы ресурсов css будут начинаться с доменного имени + css / file.css, а не domain / public / css / file.css.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector