У меня проблемы с активами в / общественности каталог в 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">
Где я могу изменить настройки, чтобы мне не нужно было добавлять / общественности в представлениях каждый раз, когда я хочу связать с активом?
Вам не нужно делать это вручную, есть функция, поставляемая с 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__;
});
Надеюсь, это имеет смысл
Вот что сработало для меня:
к 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;
}
Может кто-нибудь сказать мне правильный способ сделать это?
В корневую папку переименовать server.php в index.php и скопировать .Htaccess файл из общей папки в корневую папку. Также поделитесь своей структурой каталогов, чтобы показать, где находятся ваши активы.
просто сделай это
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
Это работает просто отлично. Когда Laravel запускается на сервере, основной файл индекса и все ресурсы находятся в «общедоступном каталоге». Таким образом, файлы ресурсов css будут начинаться с доменного имени + css / file.css, а не domain / public / css / file.css.