Symfony меняется, где ищет ресурсы в зависимости от URL

Symfony ищет ресурсы в относительном месте на основе URL-пути, по которому я перехожу. Активы загружаются и применяются правильно, когда я перехожу к пути «первого уровня», например example.com/mpre, example.com/test, example.com/foo, но затем все мои активы 404, когда я перехожу к URL «второго уровня», такой как example.com/mpre/test, example.com/test/foo, example.com/foo/bar, Почему это? Есть ли способ заставить фреймворк искать ресурсы в одном месте независимо от URL?

У меня есть 2 URL

example.com/mpre
example.com/mpre/test

Мои активы (css, js) нормально загружаются по первому URL, example.com/mpre, но затем все они 404, когда я перехожу ко второму URL, example.com/mpre/test

Когда я захожу в инспектор на каждой странице, чтобы увидеть путь к ресурсам, я вижу следующее:

example.com/bundles/app/css/023f7f6_style.css_4.css       //example.com/mpre   200 OK response
example.com/mpre/bundles/app/css/c8b625f_style.css_3.css     //example.com/mpre/test   404 Not Found response

В config.yml У меня есть следующая строка для сборки:

assetic:
write_to:   %kernel.root_dir%/../web/bundles/app/

Дополнительная информация

  • я не с использованием cssrewrite фильтр

Редактировать 1

  • Я установил Symfony 2.3 через композитор
  • Я включаю CSS в base.html.twig и использую сборку для компиляции
    их

    {% stylesheets
    '@AppBundle/Resources/assets/css/bootstrap_loader.css.scss'
    '@AppBundle/Resources/assets/css/stately/*'
    '@AppBundle/Resources/assets/css/bootstrapValidator.min.css'
    '@AppBundle/Resources/assets/css/style.css.scss'
    '@AppBundle/Resources/assets/css/learners.css'
    %}
    
  • Пути являются стандартными маршрутами. Каждый путь соответствует контроллеру
    действие, которое делает вид

  • Вот как выглядит вид, когда активы 404
    введите описание изображения здесь

  • Вот свалка ./app/console config:dump-reference assetic

Конфигурация по умолчанию для расширения с псевдонимом: «сборка»

assetic:
отладка:% kernel.debug%
use_controller:
включено:% kernel.debug%
профилировщик: ложь
read_from:% kernel.root_dir% / .. / web
write_to: %assetic.read_from%
Java: / usr / bin / java
узел: / usr / bin / node
путь_узла: [] ruby: /home/ubuntu/.rvm/rubies/ruby-2.0.0-p195/bin/ruby
sass: /home/ubuntu/.rvm/gems/ruby-2.0.0-p195/bin/sass
переменные:

    # Prototype
name:                 []
bundles:

# Defaults:
- FrameworkBundle
- SecurityBundle
- TwigBundle
- MonologBundle
- SwiftmailerBundle
- AsseticBundle
- DoctrineBundle
- SensioFrameworkExtraBundle
- AppBundle
- LswMemcacheBundle
- WebProfilerBundle
- SensioDistributionBundle
- SensioGeneratorBundle
assets:

# Prototype
name:
inputs:               []
filters:              []
options:

# Prototype
name:                 []
filters:

# Prototype
name:                 []
workers:
cache_busting:
enabled:              false
twig:
functions:

# Prototype
name:                 []

Редактировать 2

Я нашел источник проблемы. Путь ссылки был относительным, поэтому я изменил его, чтобы использовать baseUrl. <script src="{{ app.request.baseUrl }}/bundles/app{{ asset_url }}"></script> и все отлично работает.

0

Решение

Я предполагаю, что есть проблема с вашим написать в установка.

Попробуйте эти настройки и посмотрите, что произойдет.

assetic:
read_from: '%kernel.root_dir%/../web'
write_to:  '%assetic.read_from%'

Это должны быть стандартные параметры конфигурации сборки для read_from а также написать в.

Ваши настройки показывают %kernel.root_dir%/../web/bundles/app/, Assetic автоматически сгенерирует папки с пакетами, поэтому создайте свою собственную bundles папка, вероятно, вызывает неожиданные результаты.

В bundles/, app соответствует вашей пачке AppBundle, Пакет с именем FooBundle будет иметь свои активы в web/bundles/foo/ и т.п.

Обязательно очистите кэш Symfony после внесения изменений в файл конфигурации.

0

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

Других решений пока нет …

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