Yii全局变量和设置问题

时间:2012-12-04 20:15:00

标签: yii

我正在使用Yii开发一个社交网站。虽然经常使用以下内容,但我遇到了很好的数据可管理性问题。 - 用户身份 - 当前用户ID(用户查看所有者的配置文件) - 是老板???

我在哪里可以定义这些东西。 我会喜欢

if(Yii::app()->owner==ME){
//do something
}
// and similarly
if($this->isMyFreind(<Current user ID>){
}
// $this(CanIView()){

}

我希望这些功能对任何页面都公开吗?但是怎么样? 换一种说法 哪里可以放置包含我自己喜欢的功能的库,如文本缩短,图像裁剪,日期时间格式等等?

3 个答案:

答案 0 :(得分:3)

在Yii中,你可以通过创建一个继承

的类(在protected / compoents下)来实现这一点。
  

CApplicationComponent

类。然后,您将此类的任何属性全局调用为组件。

class GlobalDef extends CApplicationComponent {
 public $aglobalvar;
}

在组件下的主配置中将此类定义为:

'globaldef' => array('class' => 'application.components.GlobalDef '),

你可以这样打电话:

echo Yii::app()->globaldef->aglobalvar;

希望可以提供帮助。

答案 1 :(得分:1)

根据MVC模型,图像裁剪或日期时间格式等内容会出现在模型中。你只需要为它创建模型。

答案 2 :(得分:0)

我通常使用带有所有常用功能的globals.php文件 在index.php中(根据root中的那个):

$globals='protected/globals.php';
require_once($globals);

然后我可以在任何地方调用我的全局函数。例如,我缩短了某些Yii函数,如:

function bu($url=null){
    static $baseUrl;
    if ($baseUrl===null)
        $baseUrl=Yii::app()->request->baseUrl;
    return $url===null ? $baseUrl : $baseUrl.'/'.ltrim($url,'/');
}

所以我可以通过简单地调用Yii::app()->request->baseUrl

来调用bu()