Blade Parent CSS не вызывается, если маршрут на один уровень ниже - PullRequest
0 голосов
/ 17 апреля 2020

Я создаю интерфейс администратора для веб-приложения.

Полная структура каталога выглядит следующим образом:

|-main
| |- app
| |- bootstrap
| |- config
| |- database
| |- resources
|   | -views
|     |-admin
|      |-templates
|       |-template.blade.php
|      |-utils
|       |-foot.blade.php
|       |-head.blade.php
|     |-views
|       |-index.blade.php
|       |-users.blade.php
| |- routes
|   |- web.php
|
|-public_html
| |-admindash
|   |-dist
|     |-css
|     |-img
|     |-js
|   |-plugins
|     |-bootstrap
|     |-fontawesome-free
|     |-jquery



Файл head.blade выглядит примерно так:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta http-equiv="x-ua-compatible" content="ie=edge">

  <title>...</title>

  <!-- Font Awesome Icons -->
  <link rel="stylesheet" href="../admindash/plugins/fontawesome-free/css/all.min.css">
.
.
some more css here
.
.

</head>
<body class="hold-transition sidebar-mini">

foot.blade:

<script src="../admindash/plugins/jquery/jquery.min.js"></script>
<!-- Bootstrap 4 -->
<script 
.
.
.
More scripts here
.
.
.

</body>
</html>

Шаблонный блэйд затем включает оба из них и дает раздел для дочерних блэйдов для заполнения:

@include('admin.utils.head')

<div class="wrapper">

    <!-- Main content -->
    <div class="content">
        @yield('maincontent')
    </div>
    <!-- /.content -->

</div>

@include('admin.utils.foot')

И затем с Индекс и пользовательские блейды в папках представлений Я делаю следующее

@extends('admin.templates.template')

@section('maincontent')
.
.
main html goes here
.
.
@endsection

На этом этапе все работает нормально, я определяю функции моего контроллера, которые возвращают файлы блейдов, и мою сеть. php Маршруты, которые я также определяю :

//Admin Dashboard routes
Route::group(['namespace' => 'Admin'], function (){
    Route::get('/admin/dashboard', 'DashboardController@adminHome')->name('AdminDashboard');
    Route::get('/admin/maintenance/users', 'DashboardController@displayUsers')->name('AdminDashboardUsers');
});

Когда я загружаю route / admin / dashboard, стили отрисовываются отлично, ошибок нет. Сложность в том, что когда я выполняю визуализацию / admin / maintenance / users, то все это выключается, я получаю скелетный файл html с ошибкой в ​​консоли, что ресурсы css не могут быть загружены.

ПРИМЕЧАНИЕ: файлы css и js находятся в папке public_ html вне папки проекта.

1 Ответ

1 голос
/ 17 апреля 2020

Проблема в том, что вы используете Относительный URL . Вам нужно использовать Полный URL вместо Относительный . И вы приближаетесь к Wrong Way для развертывания вашего laravel в Shared Hosting .


Solution

Просто укажите полный URL для всех файлов css и js, как показано ниже,

<link rel="stylesheet" href="http://www.yourdomain.com/admindash/plugins/fontawesome-free/css/all.min.css">

Рекомендации (для общего хостинга)

  • Изменить laravel public каталог до public_html. ( См. Здесь )

  • Используйте функцию url() или URL::assert() для создания URL-адресов подтверждения / полноты ( См. Здесь )

Как развернуть Laravel Приложение в Shared Hosting?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...