0

求助 翻了一天没找到主题,CDetailView如何显示多张图片。我的情况如下:

  1. 我上传了多张图片,图片jpg文件存放在/images/doc目录下。
  2. 我已经输入了单元格中图像的路径,这意味着该单元格包含三个用逗号分隔的文件名:abc.jpg、xyz.jpg、abaca.jpg。
  3. 我想在 CDetailView 中显示链接,该链接可单击以在新选项卡浏览器中打开图像。

我试过这个脚本:

array(
                    'name'=>'File Link',
                    'type'=>'raw',
                    'value'=> Links of abc,  
                                       xyz,

还有这个来显示图像

$document= CHtml::encode($model->Document);
$file = str_getcsv($document ,",");

在 CDetailView 中

    array(
            'name'=>'Image',
            'type'=>'raw',
            'value'=>link to $file[1]
            ),

 array(
            'name'=>'Image',
            'type'=>'raw',
            'value'=>link to $file[2]
            ),

 array(
            'name'=>'Image',
            'type'=>'raw',
            'value'=>link to $file[3]
            ),

但是当我单击浏览器打开的无法识别的链接时,结果并不像我预期的那样。

我期望这样的结果:它应该是动态形式可能正在使用'foreach'语句如何使用它我没有得到它......

File Link : abc.jpg
                xyz.jpg
                abaca.jpg <== each must be clickable to the location of the image

……

请帮助问候

桑迪普

4

2 回答 2

0

如果我理解您的观点,您需要每行有多个图像,对吗?

对 value 属性有一个 unanymouse 函数并返回图像的链接:

'value' => function($data){ // here $data represents your model
   $link = '';
   if(!empty($data->images))
       foreach($data->links as $l)
       {
           $link .= CHtml::link(CHtml::encode($file[$i]),Yii::app()->baseUrl . '/images/' . $file[$i]) . '<br />';
       }
   return $link;
}
于 2014-02-19T12:01:46.767 回答
0

感谢您的帮助,它的简单和最好的方法......这是我的代码文档是一个在数据库和文件夹中有多个图像的一个属性

模型中的功能

public function getDocument($model)
{
    $link = '';
    $attribute=CHtml::encode($model->documents);
    $file = str_getcsv($attribute ,",");
    if(!empty($model->documents))
    foreach($file as $i=> $record)
    {
        $link .= CHtml::link(CHtml::encode($file[$i]),Yii::app()->baseURL . '/Documents/' . $file[$i]) . '<br />';
    }
    return $link;
}

在视图小部件 CDetailView

array(
    'name'=>"Uploaded Document ",
    'value'=> $model->getDocument($model),
    'type'=>'raw'   
    ),
于 2014-02-20T05:16:21.707 回答