2016-12-20 5 views
-2

少し助けが必要です。 すべてのユーザーのデータベースに、背景の色が保存されているとします。 毎回、あるユーザのログイン時に、あるフォルダ内のそのユーザのために、最初にユーザのidという名前のcssファイルが生成され、htmlテンプレートに含まれます。symfony generate css

私はCSSファイルを生成する方法を理解する必要がありますか?

ありがとうございました。

+0

あなたはユーザーの認証に何を使用していますか? FOSUserBundle? –

+0

はい、私はFOSUserBundleを使用しています。 –

答えて

-1

非常に簡単... ​​

あなたはあなたの任意のフォルダ内のすべてのユーザーのための小枝ファイルを生成し、その中で「インライン」CSSを配置する必要があります。

{% block css %} 
    <style> 
     .class { 
      parameter: {{ entity.value }}; 
     } 
    </style> 
{% endblock css %} 

ファイルを生成するには、ページがロードされたときに呼び出すサービスを作成します。 ファイルが存在するかどうか最初にチェックする必要があります。そうでない場合は、データベースからクエリを読み込み、そうでなければ、ファイルを生成し、DBから必要なデータを読み込みます。

このページで私とGopalの答えを見て、サービスを作る方法を知ってくださいHow to use session in Symfony
あなたはあなたの必要性のためにそれを使用することができsould ...;)
はまたSymfony Filesystem Component

file_put_contents()を見ては...あなたは、ファイルの内容を書くに役立つはず;)

+0

ありがとうございます。この部分ははっきりしています。たとえば、スタンダードCSSファイルが1つあります。しかし、写真や他のものを保管しているところには、いくつかのフォルダがあります。 1からnまでのフォルダを持つデータの中のDataを呼び出します。nはuserのIDです。したがって、フォルダの中には、htmlに含まれるCSSファイルがあります。どのように私はデータベースからのデータに基づいてこのCSSファイルを生成することができますか? –

+0

申し訳ありませんが、少し速いを読んだ、私の答えを編集しました、これはもう少しあなたを助ける必要があります...;) – Preciel

+0

セッションを使用してユーザー情報を保存するには良い方法ではありません。実際には、それは永久的なものではありません... –

0

I FOSUserBundleとのSymfony app.userを使用して、あなたのtwigファイルでユーザーを取得することができます。

MySQLコンソールを開き、describe fos_user;と入力すると、Twigファイルで使用できるすべてのフィールドが表示されます。だからあなたのテーブルにあなたはFOSユーザーごとに保存することができcolor

次に小枝に、あなたはこのようなもの使用することができます:あなたが把握したい場合がありますあなたのアイデアを得る

{% if app.user %} 
    {% set backColor = app.user.color %} 
{% else %} 
    {% set backColor = 'none' %} 
{% endif %} 
... 
<body style="background-color:{{ backColor }};"> 

... をSymfonyフォームを使用してFOSユーザーの色設定を保存する方法。データベースにプリファレンスを格納します。困っている場合は別の質問をすることができます。