私はSymfonyを学び、Symfony 4でボイラープレートアプリをセットアップしようとしています
このSymfonyドキュメント は、ページにアセットを含める方法、つまりasset
パッケージをそのように使用する方法を説明しています。
_<img src="{{ asset('images/logo.png') }}" alt="Symfony!" />
<link href="{{ asset('css/blog.css') }}" rel="stylesheet" />
_
このパッケージをインストールし、_/public
_ディレクトリのcssファイルにリンクしようとしています。
Symfonyがルートの_/assets
_フォルダーにアセットを配置することを推奨していることを知っていますが、可能であればこれを避けたいです。アセットをパブリックディレクトリに配置する方が理にかなっています。
私のTwig基本テンプレートは次のとおりです:
_<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}
<link href="{{ asset('public/css/main.css') }}" rel="stylesheet" />
{% endblock %}
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
<footer>footer</footer>
</html>
_
問題
ルート/ページ/テンプレートをロードすると、リンクされたcssはルートからの単純なリンクとしてレンダリングされます(Imが_<link href="public/css/main.css" rel="stylesheet" />
_としてリンクしているかのように-もちろん、_public/*
_のルートセットはありません。 _404/Not Found
_を返します。
asset()
関数が使用されていないかのようです。
試しました
assets
フォルダーに移動しますasset
パッケージがインストールされたことを確認する(インストールされている)質問
public/*
_パスがURLルートではなくアセットへのファイルシステムパスであることをSymfonyに知らせ、アセットを正常に含めるにはどうすればよいですか?/assets
_フォルダー以外のアセットのデフォルトの場所を設定するそのような機能はありますか?asset
関数のパスは、プロジェクトルートではなく、パブリックディレクトリからの相対パスである必要があります。
したがって、サーバーのdocrootが_public_html
_であり、アセットが_public_html/css/main.css
_にある場合、アセットの呼び出しは{{ asset('css/main.css') }}
になります。
追記:アセット機能では、アセットをパブリックディレクトリの外に置くことはできません。それらは公開ディレクトリにある必要があります。
Webpackがファイルを監視しているかどうかを確認します...(yarnウォッチ)何時間も回答を検索した後、プロジェクトチームのメンバーの1人が実行しているかどうかを尋ねました= {その直後に動作しました。