如何从 `Laravel Nova` 动态更改 css 变量?

How can the css variable from be changed dynamically from `Laravel Nova`?

我正在使用 Nova Settings 其中一个 Color picker 字段被使用。

NovaServiceProvider-

\OptimistDigital\NovaSettings\NovaSettings::addSettingsFields([
            Panel::make('Colors', [
                Color::make('Primary color')->slider(),
                Color::make('Secondary color')->slider(),
            ]),
        ]);

$primary-color = nova_get_setting('primary_color');

在我的 CSS 文件中 -

:root {
    --primary-color: rgb(255, 0, 0); //want the nova color setting to be used here
    --secondary-color: rgb(255, 197, 6);
  }

如何在CSS文件中调用Nova设置颜色值来动态改变颜色?

你没有说你是否需要它们用于前端或 Nova 仪表板,所以我将列出这两个过程。


前端:

// File: master.blade.php 
// Or the name of the main blade you extend, 
// if you haven't you will need to change the code on all blades

// Step 1: Add variable settings to the "master blade"
// Pro tip: it's nice to have a global variable with this info ;)
@php
    $settings = Config::get(‘YOUR_SETTINGS’);
@endphp

/* TAGs FOR TITLE, SEO, OTHER CSS FILES, ALL YOU NEED   */

// Step 2: 
<style>

    // If you have problems and don't see any changes, 
    // you can try, even if I don't like it as an idea, the "!important"
    :root {
        --primary-color: {{$settings['COLOR_FIELD_NAME']}};
        --secondary-color: {{$settings['COLOR_FIELD_NAME']}};
    }
 </style>
<body>
/* REST OF CODE */

仪表板新星:

我认为你应该改变主题,也许在保存新颜色时创建(或更新)它(你可以使用 Observer). This is the link of the official doc 这肯定比我在这里写的要完整得多.


很好,如果你想贡献

如果你喜欢,你可以 fork 写在 David Griffiths' Nova-Dark-Theme 包中的代码。您可以创建一个也接受自定义颜色并与社区共享的组件:)

使用 Nova Settings 其中 Color picker 字段被使用。

在app.blade.php-

  <style>
    <?php
    $primaryColor = nova_get_setting('primary_color');
    $secondaryColor = nova_get_setting('secondary_color');
    ?> :root {
      --primary-color: <?php echo $primaryColor ?>;
      --secondary-color: <?php echo  $secondaryColor ?>;
    }
  </style>

在tailwind.config.js-

 theme: {       
  colors: {
   'primary-color': 'var(--primary-color)',
   'secondary-color':'var(--secondary-color) ',
  },
 },