Loading



 
Calificación:
  • 1 votos - 4 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Modificar CGridView
31-07-2012, 11:31 PM
Mensaje: #1
Modificar CGridView

Hola estoy aprendiendo en Yii todavia quisiera una ayudita con el admin


tengo unas relaciones pero no se como debo mandar a llamar el nombre de otra de un dato en otra tabla
quiero poner el nombre de tipo_presupuestos_id ya esta relacionado pero no se como funciona en el CGridView

Código PHP:
$this->widget('zii.widgets.grid.CGridView', array(
    
'id'=>'cheques-grid',
    
'dataProvider'=>$model->search(),
    
'filter'=>$model,
    
'columns'=>array(
        
'id',
        
'tipo_presupuestos_id',
        
'catalogo_id',
        
'factura',
        
'proveedor_id',
        
'concepto',
        
/*
        'monto',
        'retencion',
        'ckfactura',
        'ckrestencion',
        'planilla_id',
        'acta',
        */
        
array(
            
'class'=>'CButtonColumn',
        ),
    ),
)); 

QUOTE
31-07-2012, 11:57 PM
Mensaje: #2
RE: Modificar CGridView

hola, podrias sustituir:


'tipo_presupuestos_id',


por:


array('name'=>'tipo_presupuestos_id','value'=>'$data->obtenerDatosdelpresupuesto'),


o por:


array('name'=>'presupuesto0.datosdelpresupuesto'),


Para la primera solucion,
array('name'=>'tipo_presupuestos_id','value'=>'$data->obtenerDatosdelpresupuesto'),
debes crear un metodo en tu modelo llamado getObtenerDatosDelPresupuesto(),
y en el devolver lo que quieras mostrar para el presupuesto indicado.


Para la segunda solucion, esta hecha basada en la relacion que tu puedas tener en el modelo,


disculpa lo corto de la respuesta,




QUOTE
01-08-2012, 01:31 AM
Mensaje: #3
RE: Modificar CGridView

Gracias,


Al usar la segunda opcion lo puse asi

Código PHP:
    array('name'=>'tipoPresupuestos.nombre'), 


Y si me pone el nombre y no el id solo que ya no sale el el textfield de busqueda y en el encabezaso solo sale nombre no "Tipos de Presupuesto"


y la primera opcion no me quedo muy claro,


mira yo tengo dos tablas una llamada
tipos presupuesto
y otra llamada
Cheques


y el modelo de cheques en relaciones tengo


Código PHP:
'tipoPresupuestos' => array(self::BELONGS_TO'TipoPresupuestos''tipo_presupuestos_id'), 


entonces segun lo que me dices debo crear un methodo en este modelos


por decir llamado:
pero que debo poner dentro de este methodo?

Código PHP:
public function getObtenerTiposPresupuesto()
{



y en el admin:

Código PHP:
array('name'=>'tipo_presupuestos_id','value'=>'$data->obtenertipospresupuesto'), 
y que si solo con esto se vera el text para busqueda y como poner en el encabezado personalizado el nombre.


gracias por la ayuda.

QUOTE
05-08-2012, 02:34 PM (Este mensaje fue modificado por última vez en: 05-08-2012 06:59 PM por Selectmatica.)
Mensaje: #4
RE: Modificar CGridView

Hola, yo no tengo tampoco mucha experiencia pero para poner nombre en la cabecera tienes que añadir al array el parámetro 'header'=>'mi nombre'.


Lo extoy haciendo de memoria.


Para la función podría ser algo así:


Código PHP:
public static function getobtenertipospresupuesto()
{
    return 
CHtml::listData(Presupuestos::model()->findAll(),'id','nombre');


Tal vez sería mejor añadir un condicional a la función de búsqueda:


Código PHP:
$nombre Presupuestos::model()->find('tiposdepresupuestos_id = ?', array($this->tiposdepresupuestos_id,$this->nombre)); 


Los paramétros últimos son los que aparecen en el resultado del sql.
Por ahí pueden ir las cosas, creo.

QUOTE
06-08-2012, 12:36 PM (Este mensaje fue modificado por última vez en: 07-08-2012 10:20 AM por crashon182.)
Mensaje: #5
RE: Modificar CGridView

yo tuve que hacer algo parecido en alguna oportunidad y lo solucione de la siguiente forma:
en el archivo admin.php (de la vista donde deseas modificar el CGridView coloque algo como lo que sigue:


Código PHP:
<?php $this->widget('zii.widgets.grid.CGridView', array(
    
'id'=>'capacitacion-grid',
    
'dataProvider'=>$model->search(),
    
'filter'=>$model,
    
'columns'=>array(
        
'id',
        
'nombrec',
        
'Modalidad',
        
'fechai',
        
'colaborador',
                array(
                     
'name' => 'capacitador_id',
                     
'header'=>'Capacitador',
                     
'sortable'=>false// since it would still be sorting based on                  
                     
'value'=>'$data->capacitador->nombre'// link version
                     
),
               array(
                     
'name' => 'poblacion_id',
                     
'header'=>'Poblacion',
                     
'sortable'=>false// since it would still be sorting based on                  
                     
'value'=>'$data->poblacion->descripcion'// link version
                 
),
            
            array(
                     
'name' => 'area_id',
                     
'header'=>'Area',
                     
'sortable'=>false// since it would still be sorting based on                  
                    
'value'=>'$data->area->descripcion'// link version
                 
),
        
        
//'poblacion.descripcion',
        //'area.descripcion',
        
        
array(
            
'class'=>'CButtonColumn',
        ),
    ),
)); 


presta atencion en la siguiente parte:


Código PHP:
array(
                     
'name' => 'area_id',
                     
'header'=>'Area',
                     
'sortable'=>false// since it would still be sorting based on                  
                    
'value'=>'$data->area->descripcion'// link version
                 
), 
aqui lo que hago es personalizar la seccion donde (en mi caso) salia un area, la cual estaba relacionada con otra tabla. 'name' contiene el nombre del campo, 'header' contine el encabezado de esa columna y el valor se encuentra en 'value'.


Con esto ya podras ver el CGridView modificado y contendra el nombre de las áreas y no el numero que representa el ID.


Pero... (siempre hay un pero jejej Sonrisa ) esto no es suficiente tenemos que hacer algo mas para que busque por el campo personaizado entonces hacemos lo siguiente:


vamos al modelo (en mi caso Capacitacion.php)


Buscamos la función search()


Código PHP:
public function search()
    {
        
// Warning: Please modify the following code to remove attributes that
        // should not be searched.

        
$criteria=new CDbCriteria;
                    
        
$criteria->compare('id',$this->id);
        
$criteria->compare('fechai',$this->fechai,true);
        
$criteria->compare('colaborador',$this->colaborador,true);
        
$criteria->compare('nombrec',$this->nombrec,true);
        
$criteria->compare('Modalidad',$this->Modalidad,true);
                
$criteria->with[]='capacitador';
                
$criteria->addSearchCondition('capacitador.nombre',$this->capacitador_id,true);
                
$criteria->with[]='poblacion';
                
$criteria->addSearchCondition('poblacion.descripcion',$this->poblacion_id,true);
                
$criteria->with[]='area';
                
$criteria->addSearchCondition('area.descripcion',$this->area_id,true);
        return new 
CActiveDataProvider($this, array(
            
'criteria'=>$criteria,
        ));
    } 


y prestamos atención en lo siguiente:


Código PHP:
$criteria->with[]='area';
 
$criteria->addSearchCondition('area.descripcion',$this->area_id,true); 


En esta parte estoy agregando al criteria una nueva condicion de busqueda, donde se encuentra la Descripcion de mi area. ya con esto te deberia buscar en tu CGridView.


Espero haberte orientado y cualquier consulta no tienes más que hacerla.


saludos!!

QUOTE


Posibles temas similares...
Tema: Autor Respuestas: Vistas: Último mensaje
  Ordenar en un CGridView por un campo Relacionado. ivansalomon 1 284 26-06-2014 10:01 PM
Último mensaje: bluyell
  Maestro detalle con vista "view" y un Cgridview JesusGarcia 0 316 03-06-2014 12:52 PM
Último mensaje: JesusGarcia
  Mostrar datos de en zii.widgets.grid.CGridView de una relacino muchos a muchos julioc_m18 0 352 27-05-2014 01:00 PM
Último mensaje: julioc_m18
  campo relacionado cgridview boostrap Claudio 2 529 26-05-2014 12:27 AM
Último mensaje: Claudio
Fotografía linux falla con variable $data de CgridView dabar 3 487 23-05-2014 11:30 AM
Último mensaje: rahif
Estrella [SOLUCIONADO] Problema CGridview - CSqlDataProvider julito000 6 973 06-04-2014 12:36 PM
Último mensaje: bluyell
  problema de alineacion en filtros de cgridview gabrieled209 0 622 12-02-2014 01:13 PM
Último mensaje: gabrieled209
  Como muestro solo algunos usuarios en CGridView Mgarcia 0 756 24-11-2013 12:01 PM
Último mensaje: Mgarcia
  Duda con CgridView - urlExpression Neneson 2 877 19-11-2013 01:30 AM
Último mensaje: Neneson
  Duda con CGridView ayudaaa! Mgarcia 0 728 15-11-2013 03:50 PM
Último mensaje: Mgarcia

Salto de foro:


Usuario(s) navegando en este tema: 1 invitado(s)

Contáctanos | Yii Framework en Español | Volver arriba | Volver al contenido | Archivo (Modo simple) | Sindicación RSS