我有一个Web应用程序,其中包含指向我的应用程序“album”部分的链接。我现在的问题是它显示为所有用户创建的专辑(这对应用程序中的所有成员都是一样的)。我希望每当登录的用户选择“照片”链接时,他/她就被引导到专辑页面,在那里他们只能看到他们上传的图片。
首先,这是将照片上传到的架构。:
CREATE TABLE IF NOT EXISTS `content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`node_type_id` int(11) DEFAULT NULL,
`party_id` int(11) DEFAULT NULL,
`category` text,
`title` text,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci,
`date_created` datetime DEFAULT NULL,
`date_modified` datetime DEFAULT NULL,
`start_date` datetime DEFAULT NULL,
`end_date` datetime DEFAULT NULL,
`status` int(11) DEFAULT NULL,
`content_id` int(11) NOT NULL,
`country` text NOT NULL,
`view_count` int(11) NOT NULL,
`attribute1` varchar(200) DEFAULT NULL,
`attribute2` varchar(50) DEFAULT NULL,
`liked` text,
`approved` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=15 ;
然后这就是正在观看专辑的地方:
<div class="photodiv">
<?php
foreach ($albumArr as $album)
{
Yii::app()->user->id;
$image = Image::model()->findByAttributes(array('content_id'=>$album->id, 'attribute1'=>'1'));
$photos = Image::model()->findAllByAttributes(array('content_id'=>$album->id));
echo '<div class="albumdiv">';
echo '<div class="picdiv">';
if (!empty($image))
{
echo '<a href="'.Yii::app()->createUrl('image/index',array('album'=>$album->content)).'"><img src="'.Yii::app()->baseUrl.'/images/albums/'.$album->content.'/'.$image->id.$image->content.'" height="100px" width="100px" /></a>';
}
echo '</div>';
echo '<br/>';
echo '<center><a href="'.Yii::app()->createUrl('image/index',array('album'=>$album->content)).'"><h4>'.$album->content.'</h4></a></center>';
echo count($photos) == 1 ? '<center><h5>'.count($photos).' photo</h5></center>' : '<center><h5>'.count($photos).' photos</h5></center>';
echo '</div>';
}
?>
</div>
如果您想知道如何生成它,控制器包含以下内容:
public function actionIndex()
{
$usertag = isset($_GET['usertag']) ? addslashes($_GET['usertag']) : FALSE;
$users = new CActiveDataProvider('SystemUser', array(
'id' => '',
'criteria' => array(
'alias'=>'u',
'join'=>'JOIN persons p ON u.party_id = p.party_id JOIN lookup_codes lc ON p.country = lc.id',
'condition' => $usertag ? 'status != "Approved" AND company_name LIKE "%'.$usertag.'%" OR status = "'.$usertag.'"' : 'status != "Approved"',
//'order'=> 'date_created DESC'
'order'=> 'status'
),
'pagination' => array(
'pageSize' => 100
)
));
$data = array(
'dataProvider' => $users
);
$this->render('index', $data);
}
索引呈现了我在2个脚本前显示的_view。
我的问题是我不太确定如何仅显示专辑的特定创作者。在这种情况下,'party_id'是标识创建者的ID。
答案 0 :(得分:0)
好的如果我理解正确,那么我在回答你的问题之前做了一些假设。
1.通常用户表用于登录用户并存储用户名,密码,记忆和其他属性等凭据,但在您的情况下,我假设您使用人员表登录用户。
2.在userIdentity.php中,您使用人员模型进行验证。
那你需要这样做。
首先在UserIdentity.php文件中创建一个函数
public function getId()
{
return $this->_id;
}
它将返回该人的id。 现在,在您的视图文件中,您可以使用此代码获取登录用户的ID
$id=Yii::app()->user->getId()
现在您可以在
等标准中使用它 $image = Image::model()->findByAttributes(array('content_id'=>$album->id,'party_id'=>$id, 'attribute1'=>'1'));
$photos = Image::model()->findAllByAttributes(array('content_id'=>$album->id,'party_id'=>$id,));
这将为您提供登录用户的结果
修改强>
您的下一个问题
如果您能够在该链接中显示链接并传递一些用户ID,那么您可以这样做。
1.在您显示用户链接的位置时,将该用户的链接ID传递给
CHtml::link('ViewAlbum',array('controller/userAlbum',array('id'=>userId)))
2.为特定用户创建操作
public function actionUserAlbum($id)
{
album=Album::model()->findAllByAttributes(array(
'id_of_creator_of_album'=>$id;
));
$this->render('someView',array('id'=>$id))
}
然后在您的视图中使用此ID来获取与该相册相关的照片