Я пытаюсь загрузить таблицу стилей в свою папку 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
Есть идеи, почему это не работает?






Вы можете попробовать использовать функцию ресурсов symfony:
<link rel = "stylesheet" href = "{{ asset('css/style.css') }}" />
Не похоже, что php app / console assets: install --symlink Возвращает [OK] Никакие ресурсы не были предоставлены никаким пакетом.
http://symfony.com/doc/3.4/best_practices/web-assets.html
Функция Assets по-прежнему полезна в Symfony 4.
Внутри файла расширения веточки?
Просто в базе
Я нашел это в config.yml: twig: debug: '% kernel.debug%' strict_variables: '% kernel.debug%' Не уверен, поможет ли
Я согласен с Рикаром Льове: «Активы все еще используются в SF4». А как насчет трюка с Twig? Это может быть полезно только для файлов js, потому что css может зависеть от изображений, и путь не может быть закрытым.
Пара возможных решений - без более подробной информации я не могу быть уверен, решат ли они проблему точно или нет:
Сначала вы настроили 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.
имеет ли значение выполнение этих команд?
php app/console cache:clearphp app/console assets:install --symlink