Symfony 4 путь к папке с ресурсами

Я пытаюсь загрузить таблицу стилей в свою папку Assets, следуя инструкциям на этой странице:

https://symfony.com/doc/current/best_practices/web-assets.html

Но мне не удается перейти из base.html.twig в папку, используя:

<link rel = "stylesheet"  type = "text/css" href = "/assets/css/style.css" />

моя файловая структура выглядит так:

templates 
    base.html.twig 
assets
    css
        style.css

Есть идеи, почему это не работает?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
4 505
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Вы можете попробовать использовать функцию ресурсов symfony:

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

имеет ли значение выполнение этих команд? php app/console cache:clearphp app/console assets:install --symlink

ikdekker 13.03.2018 14:06

Не похоже, что php app / console assets: install --symlink Возвращает [OK] Никакие ресурсы не были предоставлены никаким пакетом.

Litsher - Nathan 13.03.2018 14:13

http://symfony.com/doc/3.4/best_practices/web-assets.html

Функция Assets по-прежнему полезна в Symfony 4.

Внутри файла расширения веточки?

Ricard Espinàs Llovet 13.03.2018 13:59

Просто в базе

Litsher - Nathan 13.03.2018 14:22

Я нашел это в config.yml: twig: debug: '% kernel.debug%' strict_variables: '% kernel.debug%' Не уверен, поможет ли

Ricard Espinàs Llovet 14.03.2018 09:03

Я согласен с Рикаром Льове: «Активы все еще используются в SF4». А как насчет трюка с Twig? Это может быть полезно только для файлов js, потому что css может зависеть от изображений, и путь не может быть закрытым.

Filipe Fernandes 15.06.2018 18:16

Пара возможных решений - без более подробной информации я не могу быть уверен, решат ли они проблему точно или нет:

  • Сначала вы настроили webpack-encore и запустили сборку? Без этого ресурсов не будет, и nginx сгенерирует 404, пытаясь направиться к нему.

  • Во-вторых, если вы работаете с Docker, возможно, вы не смонтировали папку ./app/public/ в контейнер nginx, чтобы файлы можно было обслуживать. Если вы получаете Symfony 404 при переходе к этим файлам, это может быть проблемой.

В вашем AppExtension:

// register function here
public function getFunctions() {
    return [
        new TwigFunction('load_js_asset', array($this, 'fileGetJsAsset')),
    ];
}

// register filter here
public function getFilters() : array
{
    return [
        new TwigFilter('html_entity_decode', 
                       [$this, 'html_entity_decode'], 
                       ['is_safe' => ['html']]),
}

/**
 * @param string $string
 * @return string
 */
public function html_entity_decode(string $string) : string {
    return html_entity_decode($string);
}

/**
 * @param string $file
 * @param bool   $embedScriptTag
 * @return string
 */
public function fileGetJsAsset(string $file, bool $embedScriptTag = true) : string {
    /** @var bool|string $content */
    $content = file_get_contents(__DIR__ . '/../../assets/js/' . $file);

    if ($content === false) {
        throw new FileException('Could not found or read file: ' . $file);
    }

    if (!$embedScriptTag) {
        return $content;
    }

    return '<script>' . $content . '</script>';
}

Теперь, на ваш взгляд, загрузите ресурсы js следующим образом:

// загрузка из папки root assets / js

{{ load_js_asset('core/jquery.min.js', true)|html_entity_decode }} {{ load_js_asset('core/popper.min.js')|html_entity_decode }} {{ load_js_asset('my-beauty-js-file.js')|html_entity_decode }}`

Я надеюсь, что это помогает.

Возможно, вам понадобится также фильтр htmlspecialchars_decode.

Другие вопросы по теме