0

我有一个扩展,它显示了从 Yii 小部件类派生的基本用户配置文件。我的扩展定义如下:

class BasicProfile extends CWidget
{
public $user_id;
private $userinfo = array();
private $userdetail = array();
private $availibility = array();
private $availabletime = array();
private $usereducation = array();
private $userlanguages = array();
private $userlivingplace = array();

public function init()
{
    $this->userinfo = $users =  Users::model()->findByPk($this->user_id);
    $this->userdetail = $users->profile;
    $this->availibility = $users->user_availibility;
    $this->availabletime = $users->user_availabletime;
    $this->usereducation = $users->user_education;
    $this->userlanguages = $users->user_languagues;
    $this->userlivingplace = $users->user_livingplaces;
}
public function run() {
    $this->getUserDetail();
}
public function getUserDetail(){
    $basic = $this->userinfo;
    $detail = $this->userdetail;
    $availibility = $this->availibility;
    $availabletime = $this->availabletime;
    $usereducation = $this->usereducation;
    $userlanguages = $this->userlanguages;
    $userlivingplaces = $this->userlivingplace;

    $age = getAge(strtotime($detail['date_of_birth']));
    $is_smoker = isSmoker($detail['is_smoker']);

    $education = '';
    foreach ($usereducation as $ue)
    {
        $e = $ue->educ;
        $education .= $e['edu_name']. ', ';
    }
    $education = substr($education, 0, -2);
    $languages = '';
    foreach ($userlanguages as $ul)
    {
        $l = $ul->lang;
        $languages .= $l['language_title']. ', ';
    }
    $languages = substr($languages, 0, -2);

    $condition = array('where_condition'=>'up.user_id=:id AND up.is_currently_own=:own', 'where_data'=>array(':id'=>(int)$this->user_id, ':own'=>'Yes'));
    $user_pets = Users::model()->getUserPets($condition);
    $profile_images = UserProfileImages::model()->getProfileImages( array('select'=>'all'), $this->user_id );

    foreach( $profile_images as $profile_img ) {
        $images[] = $profile_img->profile_image;
    }
    $image = '';
    if( $images ){
        $main_image = HTTP_HOST . PROFILE_IMAGES_THUMB . $images[0];
        $image = '<img src="'. $main_image .'" />';
    }

    $address1 = $basic['address1'];
    if($basic['address2'] != "")
        $address1 .= ", ".$basic['address2'];
    $address2 = $basic['city']." ".$basic['state'].", ". $basic['zip'];

    $editprofile = url('/users/account');
    $editimglink = url('/images/icons/Modify.png');
}
}

我的目标是在我看来简单地将此扩展称为以下内容:

 $this->widget('ext.UserProfile.BasicProfile',array('user_id'=>$user_id));

但是,我想知道我的扩展是否是封装图像旋转器的合适位置?旋转器应该包含在扩展中还是作为视图的一部分?应该使用通用的 JQuery 图像旋转器,还是有一个与 Yii 框架配合得很好的?

4

1 回答 1

1

我喜欢使用 JQuery.Cycle 作为我的图像旋转器。我建议您使用资产构建一个扩展,以将代码保存在一个地方。但是,您可以将您的 css 放在您的主题文件夹中,并在您的扩展程序中构建一个基本 css 以保持它像 yii 的基本寻呼机一样干净。

你可以这样调用你的小部件:

$this->widget("application.extensions.rotator", array("images" => array("/path/to/image/1", "/path/to/image/2"), "prevBtn" => "/path/to/prev/button");
于 2012-08-31T18:38:21.303 回答