我几乎完成了为 zf2 编写一个非常简单的模块。我希望我的模块做的一件事是将一些 css 注入到布局中,以便它生成的 HTML 以更好的方式显示。
这可以从模块内完成吗?如果是这样,怎么做?
编辑:谢谢大家的及时回复。但是我想我可能没有很清楚地解释自己。当我说“注入一些 css”时,我的意思是获取一个 css 字符串并将其实际呈现在布局内部。我并不是说要链接到外部 css 文件或让资产经理像迄今为止的答案所建议的那样发布我的文件。
我几乎完成了为 zf2 编写一个非常简单的模块。我希望我的模块做的一件事是将一些 css 注入到布局中,以便它生成的 HTML 以更好的方式显示。
这可以从模块内完成吗?如果是这样,怎么做?
编辑:谢谢大家的及时回复。但是我想我可能没有很清楚地解释自己。当我说“注入一些 css”时,我的意思是获取一个 css 字符串并将其实际呈现在布局内部。我并不是说要链接到外部 css 文件或让资产经理像迄今为止的答案所建议的那样发布我的文件。
请参阅从 Zend Framework 2 中的模块发布资产或如何合并 Zend Framework 2 模块公共目录,以讨论从模块推送公共资产的选项。
除了将您的模块资产推向公开之外,您还可以将 append 放入触发方法中,例如 onBootstrap:
public function onBootstrap($e) {
$sm = $e->getApplication()->getServiceManager();
$headLink = $sm->get('viewhelpermanager')->get('headLink');
$headLink->appendStylesheet('/assets/MyModule/css/mystylesheet.css');
}
尝试使用类似的东西:
$sm = $this->getEvent()->getApplication()->getServiceManager();
$helper = $sm->get('viewhelpermanager')->get('headLink');
$helper->prependStylesheet('/css/mystylesheet.css');
在您的模块控制器中。
编辑:
如果您想在模块中存储 css 样式,您可以在布局文件(head 部分)中渲染它,或者更好的方法是在模块中创建另一个路由,例如/get/style/[:name]
. 该路由指向另一个仅返回纯文本/css 文档的操作。或多或少 :)
将变量添加到您想要插入 CSS 的布局中:
<a href="#" style="<?php echo($this->CSS); ?>">Some Link</a>
然后在您的控制器中,根据需要加载并分配它:
$this->layout()->CSS = "CSS";
$this->layout()->CSS = $this->getRequest()->getPost('CSStoInject');
$this->layout()->CSS = fopen(), curl(), etc.