我创建了一个简单的xml文件来存储样式表的名称,其中是我的xml文件。
<?xml version="1.0" encoding="UTF-8"?>
<skin>
<stylesheets>
<stylesheet>default.css</stylesheet>
</stylesheets>
</skin>
现在我尝试使用以下代码读取数据
protected function loadSkin() {
$skinData = new Zend_Config_Xml('./template/'.$this -> _template.'/skins/'.$this -> _skin.'/skin.xml');
var_dump($skinData);
$stylesheets = $skinData -> stylesheets -> stylesheet -> toArray();
if(is_array($stylesheets)) {
foreach($stylesheets as $stylesheet) {
$this -> view -> headLink() -> appendStylesheet('/template/'.$this -> _template.'/skins/' . $this -> _skin . '/css/' . $stylesheet);
}
}
}
但是它给了Call to a member function toArray() on a non-object
。我做错了什么?
答案 0 :(得分:2)
我不会使用Zend_Config_Xml
。对于初学者,它希望在XML中找到“部分”(例如“生产”,“测试”,“开发”)。为zf
命名空间提供了相当大的开销。
相反,只需使用SimpleXML
$skinData = simplexml_load_file('./template/'.$this->_template.'/skins/'.$this->_skin.'/skin.xml');
foreach ($skinData->stylesheets->stylesheet as $stylesheet) {
$this->view->headLink()->appendStylesheet(...);
}
答案 1 :(得分:2)
实际上,您的代码没有任何问题。这只是一个逻辑错误。您告诉Zend_Config_Xml
将样式表解析为数组。但是由于您只提供了一个样式表,因此它不会将其解析为数组。
您的解决方案
只需将另一个样式表添加到xml文件中即可。
像
<?xml version="1.0" encoding="UTF-8"?>
<skin>
<stylesheets>
<stylesheet>default.css</stylesheet>
<stylesheet>another.css</stylesheet>
</stylesheets>
</skin>
答案 2 :(得分:0)
我发现相同...再次添加相同的css文件。 Zend打算打印一次。
<?xml version="1.0" encoding="UTF-8"?>
<skin>
<stylesheets>
<stylesheet>style.css</stylesheet>
<stylesheet>style.css</stylesheet>
</stylesheets>
</skin>