如何在laravel中将css嵌入HTML?

6
首先,为了明确事情,我知道可以通过以下方式包含我的css文件:
{{ HTML::style('css/myStyle.css') }}

生成的 HTML 将是:

所需翻译内容:

<link rel="stylesheet" type="text/css" href="http://myhost/public/css/myStyle.css">

问题在于我的视图文件用于电子邮件,许多电子邮件客户端不会加载外部css文件。因此,我需要将其更改为以下格式:

<style>
    .content-of-my-css {
        //content of my css
    }
    // more css
</style>

由于css设置将用于多个电子邮件模板,我不想硬编码它。在纯PHP中,这可以通过以下方式完成 (参考)

<style><?php include "path/to/my/css";?></style>

然而,当我在laravel中这样做时,它会提示:

ErrorException (E_ERROR) include(): http:// wrapper is disabled in the server configuration by allow_url_include=0

那么,在laravel中有没有一种方法可以嵌入css?(我正在使用laravel 4.2)


这对我很有帮助,也可能会帮助其他从谷歌搜索到这里的人。https://codingwithstef.com/2021-02-11-how-to-embed-essential-styles-with-a-custom-blade-directive - alpersunter
2个回答

9

看起来您正在使用URL而不是本地文件路径。

例如:

include('http://example.com/css/styles.css');

这会产生错误,但以下内容不应该产生错误

include(public_path().'css/styles.css');

只是为了记录。你漏掉了一个“/” -> include(public_path().'/css/styles.css'); 但是对于这个答案我点赞。非常好用。 - fatel

2

如果您正在使用多个模板,我建议您创建多个样式视图,其中只包含 CSS,您可以使用 Blade @include 包含它们。

style1.blade.php
style2.blade.php

在样式中只需要放置CSS代码

<style>
    .content-of-my-css {
        //content of my css
    }
    // more css
</style>

在 master.blade.php 布局文件中。
<html>
  <head>@include('style1')</head>
</html>

如果是动态的,您可以传递样式参数。
@include($style)

由于 CSS 样式也将用于电子邮件预览(即普通网页),因此在我的情况下最好将其保留为 CSS 文件。 - cytsunny
此外,在HTML中应使用<head>而不是<header>。 - cytsunny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接