我想知道如何在yii2中添加链接标记/谷歌字体。
我想添加以下内容
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700' rel='stylesheet' type='text/css'>
我找到了这个documentation,但没有提及关于链接/添加谷歌字体等的任何内容
答案 0 :(得分:22)
正确的答案是创建一个新的AssetBundle。
虽然可以直接将字体的HTML放入main.php文件中,但这不是Yii方式。如果您尝试以这种方式加载jQuery文件,则在将它们直接放入HTML时可能会发现奇怪的行为。
例如:直接将Bootstrap CDN的HTML标记放入main.php的头部。然后,在代码中的某处尝试使用工具提示。您将在控制台中收到错误,即工具提示不是一个功能。 - 这是因为Yii将所有模板文件放在一起的方式,当时Bootstrap不可用。
虽然简单地加载字体可能不会导致任何问题,但按照预期的方式做事情是个好主意。遵循MVC规则,正确记录您的代码,并遵循Yii最佳实践,将会有很长的路要走。一年后当你不得不重新参与一个项目时,你不仅要感谢自己,而且下一个人会很感激。我无法进入系统,看到随处可见的东西,chincy hacks,意大利面条代码,没有文档或评论。
创建一个新的AssetBundle。在assets
文件夹中,您可能已经拥有AppAsset.php
。复制它,并将其命名为FontAsset.php
。
以下是我的项目中使用3种Google字体的示例。
<强> FontAsset.php 强>
<?php
namespace app\assets;
use yii\web\AssetBundle;
class FontAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
public $css = [
'//fonts.googleapis.com/css?family=Open+Sans:400,700',
'//fonts.googleapis.com/css?family=Ubuntu:400,700',
'//fonts.googleapis.com/css?family=Oswald:400,700'
];
public $cssOptions = [
'type' => 'text/css',
];
}
在你的布局中,例如main.php。在您看到AppAsset::register($this)
<强> main.php 强>
use app\assets\FontAsset;
FontAsset::register($this);
对于要加载这些字体的每个布局文件,请包含FontAsset。
AssetBundle基本上是一组CSS和/或JS文件和选项。您可以添加另一个,例如JWPlayer说名为VideoAsset,并在其中添加JWPlayer的JS / CSS文件。
重点是,您不应该直接将这些内容直接添加到布局的HTML中,因为它可能会导致问题。让AssetManager通过声明AssetBundles来处理它们。
以后可能会为你节省开支!
答案 1 :(得分:0)
最好的方法是创建资产包并添加指向包的链接。 你可以在这里找到完整的指南: http://www.yiiframework.com/doc-2.0/guide-structure-assets.html
答案 2 :(得分:-2)
您可以将它直接放在布局的头部(文件视图/ layouts / main.php)