miércoles, 19 de junio de 2013

YII – Visualizar o descargar imágenes desde CDetailView

CdetailView es lo que al menos, por defecto, nos muestra la información de nuestro modelo a través de index.php. Si vemos este fichero, nos encontraremos con un arreglo parecido a este:

widget('zii.widgets.CDetailView', array(
 'data'=>$model,
 'attributes'=>array(
  'idusuario',
  'usuario',
  'password',
  'avatar',
 ),
)); ?>


Aquí nos mostrará los datos respecto, pero si por ejemplo, en avatar, no queremos mostrar la ruta, nombre de la imagen, etc. Y queremos mostrar la imagen o permitir descargarla, debemos cambiar ese valor, por lo siguiente:

Para visualizarla

array(
 'label'=>'avatar',
 'type'=>'raw',
 'value'=> Chtml::image(Yii::app()->baseUrl.'/images/' . $model->avatar),
),


Para descargarla

array(
 'label'=>'avatar',
 'type'=>'raw',
 'value'=> Chtml::link(Yii::app()->baseUrl.'/images/' . $model->avatar),
),


La gran diferencia está entre Chtml::image y Chtml:link. Quedando más o menos de la siguiente manera
widget('zii.widgets.CDetailView', array(
 'data'=>$model,
 'attributes'=>array(
  'idusuario',
  'usuario',
  'password',
  array(
   'label'=>'avatar',
   'type'=>'raw',
   'value'=> Chtml::link(Yii::app()->baseUrl.'/images/' . $model->avatar),
  ),
 ),
)); ?>

8 comentarios:

Hola, soy nuevo en yii e intento aplicar lo que aquí dices pero no lo consigo, además de modificar esas lineas hay que escribir algo en la view del controlador ??
me quedo de esta manera...

array(
'label'=>'imagen',
'type'=>'raw',
'value'=>Chtml::image(Yii::app()->baseUrl.'/../images/carrusel/' . $model->imagen),
),

y el error me lo marca justo en la linea de...

'value'=>Chtml::image(Yii::app()->baseUrl.'/../images/carrusel/' . $model->imagen),

pienso que tal vez pueda ser la ruta, asi la tengo para cuando registro las imagenes. :/

Exactamente, cual es el error que te da?

array(
'label' => 'preview',
'type' => 'raw',
'value' => CHtml::image(Yii::app()->request->baseUrl . '/banner/' . $model->preview, $model->preview, array('width' => 200)),
),

hola amigo cuando intento descargar la imagen me dice que la accion no puede ser completada a que se debera

Lo primero que haría, sería validar que la ruta sea la correcta. Cuéntame como te fue

Agradezco este tutorial que me esta ayudando a resolver problema.
Ahora es posible agregar el efecto que al hacer click en la imagen esta se mostrase en otra pagina y agrandada?
Gracias por el aporte.

Buen dia, estoy realizando un proyecto de RRHH y pude cargar y guardar la foto perfectamente; tome el codigo:

array(
'header'=>'Foto',
'type'=>'raw',
'value'=> Chtml::image(Yii::app()->baseUrl.'//fotos/' . $model->foto),
),
Sin embargo me crea el siguiente error; me podria ayudar a visualizar la foto. gracias:

array(
'header'=>'Foto',
'type'=>'raw',
'value'=> Chtml::image(Yii::app()->baseUrl.'//fotos/' . $model->foto),
),

Parse error: syntax error, unexpected '<' in C:\xampp\htdocs\yii3\framework\base\CComponent.php(614) : eval()'d code on line 1

Publicar un comentario