Не могу загрузить активы в Symfony 4 - PullRequest
0 голосов
/ 01 марта 2019

У меня проблемы с веб-приложением в Symfony 4

Я создал шаблон ветки и начал добавлять некоторые ресурсы, в данном случае файл Js для полной функциональности.Но когда я захожу в браузер, файл Js не загружается, он появляется с ошибкой 404

No route found for \"GET /public/test.js
ymfony\\Component\\Routing\\Exception\\ResourceNotFoundException in /srv/sso-gateway/var/cache/dev/srcDevDebugProjectContainerUrlMatcher.php:50\nStack trace:\n#0 /srv/sso-gateway/vendor/symfony/routing/Matcher/UrlMatcher.php(107):

Это мой файл ветки

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>{% block title %}SSO - DIOCESAN!{% endblock %}</title>
        {% block stylesheets %}{% endblock %}
        <link rel="icon" type="image/x-icon" href="{{ asset('favicon.ico') }}" />
        <link rel="stylesheet" href="{{ asset('app.css') }}" />
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    </head>
    <body>
        {% block body %}{% endblock %}
        {% block javascripts %}
            <script src="../public/test.js"></script>
            {#<script src="{{ asset('assets/vendor/angular/angular.js') }}"></script>#}
        {% endblock %}
    </body>
</html>

Как видите, есть двафайлы, test.js (в / public directory) и app.css (в / web dir), ни один из них не загружает обе ошибки throw 404, я не знаю, что я делаю неправильно.

Я использую FosRestBundle, я не знаю, связана ли эта ошибка с конфигурацией FosRest.

Здесь моя конфигурация FosRest

fos_rest:
    allowed_methods_listener: true
    serializer:
        serialize_null: true
    body_listener:
        array_normalizer: fos_rest.normalizer.camel_keys
    body_converter:
        enabled: true
    disable_csrf_role: ROLE_API
    format_listener:
        rules:
            - { path: '^/sso/menu', priorities: ['html'], fallback_format: 'html', prefer_extension: false }
            - { path: '^/public/request-password', priorities: ['html'], fallback_format: 'html', prefer_extension: true }
            - { path: '^/', priorities: ['json'], fallback_format: 'json', prefer_extension: false }
    routing_loader:
        default_format:  json
        include_format: false
    view:
        view_response_listener: true
        formats:
            json: true
            xml: false
            rss: false
            html: true
        mime_types:
            json: ['application/json', 'application/x-json']
        jsonp_handler: false
    exception:
        enabled: true

Есть предложения?Заранее спасибо.

1 Ответ

0 голосов
/ 01 марта 2019

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

Для этого случая:

<script src="../public/test.js"></script> 

Попробуйте добавить это для абсолютного URL

ПРАВКА для ошибки

<script src="{{ app.request.schemeAndHttpHost }}/test.js"></script>

В случае с активами проверьте эту ссылку (или вы можете использовать тот же метод, который использовался в последнем случае):

Включая активы (CSS, JS) в шаблоне Symfony 4 / Twig

...