从zf2模块中将CSS注入布局

时间:2012-11-11 04:18:29

标签: php zend-framework2

我差不多为zf2写了一个非常简单的模块。我希望我的模块做的一件事是向布局注入一些css,以便它生成的HTML以更好的方式显示。

这是否可以在模块内完成?如果是这样,怎么样?

编辑:谢谢大家的快速回复。但是我想我可能没有非常清楚地解释自己。当我说“注入一些css”时,我的意思是采用一串css并将其实际渲染到布局中。我并不是指链接到外部css文件或让资产管理器发布我的文件,就像目前为止建议的答案一样。

3 个答案:

答案 0 :(得分:7)

有关从模块推送公共资产的选项的讨论,请参阅Publishing assets from modules in Zend Framework 2How to merge Zend Framework 2 module public directories

除了将模块资产推送到公共场所之外,您还可以将附加内容放入触发方法,例如onBootstrap:

public function onBootstrap($e) {
    $sm = $e->getApplication()->getServiceManager();
    $headLink = $sm->get('viewhelpermanager')->get('headLink');
    $headLink->appendStylesheet('/assets/MyModule/css/mystylesheet.css');
}

答案 1 :(得分:2)

尝试使用以下内容:

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

在您的模块控制器中。

修改

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

答案 2 :(得分: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.