Les dejo una imagen que habla por si sola.
A ese campo, Página Web, lo completo con una función que si el campo es nulo, coloca ‘No posee’ y sino un link a la web (que también queda afuera de la tabla en el mismo lugar).
Además necesito saber como puedo agregar de alguna forma algo como:
...array(
'name'=>'loquesea',
'value'=>$data->MiFuncion;
),
...
donde esa función me de una simple lista de items separados por <li> y </li>.
Espero sus respuestas.
Muchas gracias.
En view.php:
$this->widget('zii.widgets.CDetailView', array(
'data'=>$model,
'attributes'=>array(
'direccion',
'telefono',
'mail',
array(
'name'=>'web',
'value'=>$model->PaginaWeb,
),
array(
'name'=>'idZona',
'value'=>$model->idZona0->nombre,
),
array(
'name'=>'idTipo',
'value'=>$model->idTipo0->nombre,
),
),
));
En el modelo:
public function getPaginaWeb(){
if($this->web=='')
echo 'No Posee';
else
echo CHtml::link(CHtml::encode($this->web), $this->web);
}
Iza
(Isa 99960)
January 24, 2012, 4:15pm
4
Hola, ¿Ya lo resolviste?
El problema es que en tu función no estas regresando el valor, aquí te pongo un ejemplo que se me ocurrió hacer para resolver tu problema …
Vista:
<?php $this->widget('zii.widgets.CDetailView', array(
'data' => $model,
'attributes' => array(
array(
'name'=>'Nombre Completo ',
'value'=>$model->NOMBRE.' '.$model->APATERNO.' '.$model->AMATERNO,
),
'LOGIN',
[b] array(
'name'=>'Activo ',
'value'=>valor($model->ACTIVO),
),[/b]
'itemTemplate' => "
<tr class=\"{class}\"><td style=\"width: 120px\"><b>{label}</b></td><td>{value}</td></tr>\n",
'htmlOptions' => array(
),
)); ?>
Metodo:
function valor($activado){
if($activado=="S")
{
return "Si";
}
else
{
return "No";
}
}
Para probarla puse la función en la misma vista (solamente) recuerda que en el modelo se le tienen que otorgar permisos … espero que te sirva, saludos.
Iza
(Isa 99960)
January 24, 2012, 4:16pm
5
no se puso en negritas el codigo.
Gracias Iza, puse return en lugar de echo y el ‘No posee’ lo muestra genial, el problema sigue siendo con el link!
Si uso la siguiente función en el modelo:
public function getPaginaWeb(){
if($this->web=='')
return 'No Posee';
else
return CHtml::link(CHtml::encode($this->web), $this->web);
}
en la tabla veo:
Página web ------ <a href="http://www.loquesea.com ">http://www.loquesea.com </a>
Ayudas?
Iza
(Isa 99960)
January 25, 2012, 4:37pm
7
Para el link tienes que especificar que el atributo es de tipo "raw", entonces quedaría de esta forma:
array(
'name'=>'Activo ',
'value'=>valor($model->ACTIVO),
'type'=>'raw',
),
Y la función quedaria así:
function valor($activado){
if($activado=="S")
{
return "Si";
}
else
{
return CHtml::link(CHtml::encode("Mi Link"), array('ejemplo/view'));
}
}
Funcionó con ‘type’=>‘raw’!!
Muchas gracias!