如何使用Yii框架从数据库中检索图像文件?

时间:2012-08-21 20:57:45

标签: php yii

我们的Yii Framework应用程序定义为UserProfileImages模型的一部分:

public function getProfileImages($param, $user_id) {
        if(isset($param['select']) && $param['select']=='all'){
            $profile_images = UserProfileImages::model()->findAllByAttributes( array( 'user_id'=>$user_id) );

        } else {
            $profile_images = UserProfileImages::model()->findByAttributes( array( 'user_id'=>$user_id) );
        }
        return $profile_images;
    }

如何将上面的代码段连接到我视图中的窗口小部件,以返回给定用户的所有图像?
奖金问题:您建议使用哪种图像旋转器进行上述渲染?

1 个答案:

答案 0 :(得分:1)

在视图文件中,添加类似这样的内容,假设您的控制器指定了$ user_id:

$this->widget('UserProfileImagesWidget', array(
    "userProfileImages" => UserProfileImages::getProfileImages(
        array("select" => "all"), 
        $user_id
     ),
     "user_id" => $user_id
)); 

根据您的MVC理念,您还可以在控制器中检索userProfileImages数据并将该数据传递给您的视图。

定义这样的小部件:

class UserProfileImagesWidget extends CWidget {
    public $user_id;
    public $userProfileImages = array();

    public function run() {
        $this->render("userProfileImage");
    }
}

最后,在userProfileImages.php视图文件中,您可以执行以下操作:

if(!empty($this->userProfileImages)) {
    // Your display magic
    // You can access $this->user_id
}

作为旁注:您可能希望在getProfileImages中更改参数的顺序。如果$ user_id是第一个参数,你可以完全省略$ params,以防你不想指定任何参数。