在Zend中设置正文类

时间:2013-04-11 20:57:27

标签: css zend-framework frameworks styles

我正在研究Zend 1.12应用程序,并尝试将样式类分配给布局体标记。

我发现这个示例似乎处理任务的Bootstrap.php文件: https://gist.github.com/fideloper/1302688

似乎整合得很好,但身体的课程总是空白。

有人可以指出我在正确的方向指导如何将课程分配给身体吗?

感谢。

2 个答案:

答案 0 :(得分:2)

对我上面引用的代码段进行了一些小改动。

class AppName_Helper_BodyClass extends Zend_View_Helper_Placeholder_Container_Standalone {

    private $_classes = array();

    public function __construct($classes = null) {
        if(is_array($classes)) {
            $this->addClass($classes);
        }
    }

    public function addClass($class) {
        if(is_array($class)) {
            foreach($class as $k => $c) {
                if(is_string($c)) {
                    if(is_string($k)) {
                        $this->addClass($k.'-'.$c); //recursion
                    } else {
                        $this->addClass($c);
                    }
                } else {
                    throw new Zend_Exception('Class must be a string - is type: '.gettype($c));
                }
            }
            return $this;
        }

        if(is_string($class)) {
            $this->_classes[] = $class;
            return $this;
        } else {
            throw new Zend_Exception('Class must be a string - is type: '.gettype($class));
        }
        return $this;
    }

    public function removeClass($class) {
        $key = array_search($class, $this->_classes);
        if($key !== false) {
            unset($this->_classes[$key]);
        }
        return $this;
    }

    public function bodyClass() {
        return $this;
    }

    public function toString() {
        return implode(' ', $this->_classes);
    }
}

这个片段进入我的布局:

$uri = Zend_Controller_Front::getInstance()->getRequest()->getParams();
$this->bodyClass()->addClass($uri);

结果是这样的(对于模块 - “默认”,控制器 - “auth”,动作 - “登录”):

<body class="controller-auth action-signin module-default"> 

我抓取当前请求的参数并将它们映射到body类。希望这有助于处理此事的人。

答案 1 :(得分:0)

从帮助者的外观来看,你需要调用其中一个方法来添加一个类。来自您的一个控制器:

$this->view->bodyClass()->addClass('something');

是你如何使用它?