包 | system.web |
---|---|
继承 | class CThemeManager » CApplicationComponent » CComponent |
实现 | IApplicationComponent |
源自 | 1.0 |
版本 | $Id: CThemeManager.PHP 3426 2011-10-25 00:01:09Z alexander.makarow $ |
源码 |
CThemeManager管理web应用程序的主题。
一个主题是一个view/layout文件和资源文件 (例如CSS,image,js文件)的集合。当一个主题是激活的时,CController 将首先在主题文件夹下查找指定的view/layout。 如果此主题提供了它们,相应的view/layout文件将被使用。 否则,默认的view/layout文件将被使用。
默认情况下,每一个主题被组织为一个目录,目录名就是主题名。 所有的主题存放在“WebRootPath/themes”目录下。
要激活一个主题,设置theme属性 为主题的名字。
一个独立的主题经常包含可经web访问的资源文件, 请确保view/layout文件被保护不被web用户访问。
一个主题是一个view/layout文件和资源文件 (例如CSS,image,js文件)的集合。当一个主题是激活的时,CController 将首先在主题文件夹下查找指定的view/layout。 如果此主题提供了它们,相应的view/layout文件将被使用。 否则,默认的view/layout文件将被使用。
默认情况下,每一个主题被组织为一个目录,目录名就是主题名。 所有的主题存放在“WebRootPath/themes”目录下。
要激活一个主题,设置theme属性 为主题的名字。
一个独立的主题经常包含可经web访问的资源文件, 请确保view/layout文件被保护不被web用户访问。
公共属性
属性 | 类型 | 描述 | 定义在 |
---|---|---|---|
basePath | string | 所有主题的基本路径。默认是“WebRootPath/themes”。 | CThemeManager |
baseUrl | string | 所有主题的基本URL。默认是“/WebRoot/themes”。 | CThemeManager |
behaviors | array | 这个应用组件附加的行为。 这此行为将在应用组件调用init时附加在应用组件上。 请参照CModel::behaviors如何指定此属性值。 | CApplicationComponent |
isInitialized | boolean | 检查应用组件是否已经初始化。 | CApplicationComponent |
themeClass | string | 表示一个主题的主题类名称。 默认是CTheme。这也可以是一个带点语法的类名。 | CThemeManager |
themeNames | array | 可用主题名列表 | CThemeManager |
公共方法
方法 | 描述 | 定义在 |
---|---|---|
__call() | 如果类中没有调的方法名,则调用这个方法。 | CComponent |
__get() | 返回一个属性值、一个事件处理程序列表或一个行为名称。 | CComponent |
__isset() | 检查一个属性是否为null。 | CComponent |
__set() | 设置一个组件的属性值。 | CComponent |
__unset() | 设置一个组件的属性为null。 | CComponent |
asa() | 返回这个名字的行为对象。 | CComponent |
attachBehavior() | 附加一个行为到组件。 | CComponent |
attachBehaviors() | 附加一个行为列表到组件。 | CComponent |
attachEventHandler() | 为事件附加一个事件处理程序。 | CComponent |
canGetProperty() | 确定属性是否可读。 | CComponent |
canSetProperty() | 确定属性是否可写。 | CComponent |
detachBehavior() | 从组件中分离一个行为。 | CComponent |
detachBehaviors() | 从组件中分离所有行为。 | CComponent |
detachEventHandler() | 分离一个存在的事件处理程序。 | CComponent |
disableBehavior() | 禁用一个附加行为。 | CComponent |
disableBehaviors() | 禁用组件附加的所有行为。 | CComponent |
enableBehavior() | 启用一个附加行为。 | CComponent |
enableBehaviors() | 启用组件附加的所有行为。 | CComponent |
evaLuateExpression() | 计算一个PHP表达式,或根据组件上下文执行回调。 | CComponent |
getBasePath() | 返回所有主题的基本路径。默认是“WebRootPath/themes”。 | CThemeManager |
getBaseUrl() | 返回所有主题的基本URL。默认是“/WebRoot/themes”。 | CThemeManager |
getEventHandlers() | 返回一个事件的附加处理程序列表。 | CComponent |
getIsInitialized() | 检查应用组件是否已经初始化。 | CApplicationComponent |
getTheme() | 返回已取回的主题。如果主题不存在为Null。 | CThemeManager |
getThemeNames() | 返回可用主题名列表 | CThemeManager |
hasEvent() | 确定一个事件是否定义。 | CComponent |
hasEventHandler() | 检查事件是否有附加的处理程序。 | CComponent |
hasProperty() | 确定属性是否被定义。 | CComponent |
init() | 初始化应用组件。 | CApplicationComponent |
raiseEvent() | 发起一个事件。 | CComponent |
setBasePath() | 设置所有主题基本路径。 | CThemeManager |
setBaseUrl() | 设置所有主题的基本URL。 | CThemeManager |
属性详细
basePath
属性
public string getBasePath()
public void setBasePath(string $value)
public void setBasePath(string $value)
所有主题的基本路径。默认是“WebRootPath/themes”。
baseUrl
属性
public string getBaseUrl()
public void setBaseUrl(string $value)
public void setBaseUrl(string $value)
所有主题的基本URL。默认是“/WebRoot/themes”。
themeClass
属性
public string $themeClass;
表示一个主题的主题类名称。 默认是CTheme。这也可以是一个带点语法的类名。
themeNames
属性
只读
public array getThemeNames()
可用主题名列表
方法详细
getBasePath()
方法
public string getBasePath()
| ||
{return} | string | 所有主题的基本路径。默认是“WebRootPath/themes”。 |
public function getBasePath()
{
if($this->_basePath===null)
$this->setBasePath(dirname(Yii::app()->getRequest()->getScriptFile()).DIRECTORY_SEPARATOR.self::DEFAULT_BASEPATH);
return $this->_basePath;
}
getBaseUrl()
方法
public string getBaseUrl()
| ||
{return} | string | 所有主题的基本URL。默认是“/WebRoot/themes”。 |
public function getBaseUrl()
{
if($this->_baseUrl===null)
$this->_baseUrl=Yii::app()->getBaseUrl().'/'.self::DEFAULT_BASEPATH;
return $this->_baseUrl;
}
getTheme()
方法
public CTheme getTheme(string $name)
| ||
$name | string | 要取回的主题的名称 |
{return} | CTheme | 已取回的主题。如果主题不存在为Null。 |
public function getTheme($name)
{
$themePath=$this->getBasePath().DIRECTORY_SEPARATOR.$name;
if(is_dir($themePath))
{
$class=Yii::import($this->themeClass, true);
return new $class($name,$themePath,$this->getBaseUrl().'/'.$name);
}
else
return null;
}
getThemeNames()
方法
public array getThemeNames()
| ||
{return} | array | 可用主题名列表 |
public function getThemeNames()
{
static $themes;
if($themes===null)
{
$themes=array();
$basePath=$this->getBasePath();
$folder=@opendir($basePath);
while(($file=@readdir($folder))!==false)
{
if($file!=='.' && $file!=='..' && $file!=='.svn' && is_dir($basePath.DIRECTORY_SEPARATOR.$file))
$themes[]=$file;
}
closedir($folder);
sort($themes);
}
return $themes;
}
setBasePath()
方法
public void setBasePath(string $value)
| ||
$value | string | 所有主题基本路径。 |
public function setBasePath($value)
{
$this->_basePath=realpath($value);
if($this->_basePath===false || !is_dir($this->_basePath))
throw new CException(Yii::t('yii','Theme directory "{directory}" does not exist.',array('{directory}'=>$value)));
}
setBaseUrl()
方法
public void setBaseUrl(string $value)
| ||
$value | string | 所有主题的基本URL。 |
public function setBaseUrl($value)
{
$this->_baseUrl=rtrim($value,'/');
}