4

我几乎完成了为 zf2 编写一个非常简单的模块。我希望我的模块做的一件事是将一些 css 注入到布局中,以便它生成的 HTML 以更好的方式显示。

这可以从模块内完成吗?如果是这样,怎么做?

编辑:谢谢大家的及时回复。但是我想我可能没有很清楚地解释自己。当我说“注入一些 css”时,我的意思是获取一个 css 字符串并将其实际呈现在布局内部。我并不是说要链接到外部 css 文件或让资产经理像迄今为止的答案所建议的那样发布我的文件。

4

3 回答 3

8

请参阅从 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');
}
于 2012-11-11T15:59:55.200 回答
3

尝试使用类似的东西:

$sm = $this->getEvent()->getApplication()->getServiceManager();
$helper = $sm->get('viewhelpermanager')->get('headLink');
$helper->prependStylesheet('/css/mystylesheet.css');

在您的模块控制器中。

编辑:

如果您想在模块中存储 css 样式,您可以在布局文件(head 部分)中渲染它,或者更好的方法是在模块中创建另一个路由,例如/get/style/[:name]. 该路由指向另一个仅返回纯文本/css 文档的操作。或多或少 :)

于 2012-11-11T06:19:13.140 回答
1

将变量添加到您想要插入 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.
于 2013-04-22T19:51:25.667 回答