Consulta Tbgridview

Saludos comunidad,

Les cuento, estoy utilizando yiistrap, y tengo 2 consultas, que quería saber si alguien me puede orientar.

[list=1]

[*]Como puedo modificar el ancho de una columna? pero sólo de algunas no de todas, ya que tengo algunas columnas que son "activo" y simplemente las filas dicen "si" o "no", pero el ancho es demasiado.

[*]Por otro lado, de que forma puedo cambiar el valor de lo traído de la db? por ejemplo, activo es booleano, por lo que me trae "0" y "1", pero quiero cambiar los "0" por "NO" y los "1" por "SI"

[/list]

saludos

Saludos:

Trata lo siguiente…




array(

       'name'=>'SiteID',

       'value'=>'$data->SiteID',

       'headerHtmlOptions'=>array('width'=>'100px'),

),






array(

       'name'=>'IsActive',

       'type'=>'boolean',

       'filter'=>array('0'=>'No', '1'=>'Yes'),

       'value'=>'$data->IsActive',

       'headerHtmlOptions'=>array('width'=>'50px'),

),



JFReyes, muchas gracias!!

Respecto a la primera pregunta, estuve mucho tiempo buscando mi error, y era que utilizaba HtmlOptions y no headerHtmlOptions.

Respecto a la segunda, aún me surge una duda, yo tengo lo siguiente:


array(

     'name' => 'fun_activo',

     'type' => 'boolean',

     'filter' => array('0' => 'NO', '1' => 'SI'),

     'value' => '$data->fun_activo',

     'headerHtmlOptions' => array('width' => '70px'),

),

El problema es que en el TbGridView, las filas me aparecen con "NO/YES", de que forma podré cambiar esto al español?

Por otro lado, no corresponde al tema, pero no es primera vez que debo usar ‘$data->atributo’, como puedo entender en que ocasiones utilizo $model->atributo o $data->atributo? hasta el momento me he dado cuena que dentro de los widgets, ya sea en columns o items utilizo $data.

saludos

Para cambiar el idioma totalmente a español y no tener que programar las traducciones manualmente debes cambiar el parámetro “language” adentro de la configuración de la aplicación que reside en protected/config/main.php: e.g. ‘language’=>‘es’.

Se utiliza $data cuando la información viene de un DataProvider y $model cuando viene directo del modelo. GridView usa dataproviders.

JFReyes, gracias por la pronta respuesta, y cual podrá ser el error? mi /protected/config/main.php lo tengo así


return array(

    'basePath' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '..',

    'name' => 'My Web Application',

    'language' => 'es',

    'sourceLanguage' => 'es',

    //Resto del código

Porqué no lo traducirá?

Si sourceLanguage y language son iguales entonces Yii no traduce y va por defecto al inglés. La recomendación es mantener ‘sourceLanguage’=>‘en’ y ‘language’=>‘es’ o el idioma que sea.

Eso que me mencionas me llama la atención, porque dejo sourceLanguage=>‘en’ o incluso lo comento, y no me traduce :S

Está raro…

Postea tu código del TbGridView a ver si detecto algo.

Si, está raro, porque si en el CDetailView, hay campos vacíos me dice: "No asignado", es decir, está traduciendo, pero en el TbGridView no traduce.


<?php

            $this->widget('bootstrap.widgets.TbGridView', array(

                'id' => 'funcionario-grid',

                'dataProvider' => $model->search(),

                'filter' => $model,

                'type' => TbHtml::GRID_TYPE_BORDERED,

                'template' => "{items}",

                'columns' => array(

                    array('name' => 'fun_nombre', 'headerHtmlOptions' => array('width' => '300px'),),

                    array('name' => 'fun_rol', 'headerHtmlOptions' => array('width' => '115px'),),

                    array(

                        'name' => 'fun_activo',

                        'type' => 'boolean',

                        'filter' => array('0' => 'NO', '1' => 'SI'),

                        'value' => '$data->fun_activo',

                        'headerHtmlOptions' => array('width' => '70px'),

                    ),

                    array(

                        'class' => 'bootstrap.widgets.TbButtonColumn',

                        'template' => '{view} {update} {delete} {pdf}',

                        'buttons' => array(

                            'pdf' => array(

                                'label' => 'Generar PDF',

                                'url' => "CHtml::normalizeUrl(array('crearpdf', 'id'=>\$data->fun_id))",

                                'imageUrl' => Yii::app()->request->baseUrl . '/images/pdf_icon.png',

                                'options' => array('class' => '_pdf'),

                            ),

                        ),

                    ),

                ),

            ));

            ?>

Entonces el problema es con el TbGridView de Yiistrap, y no con Yii. Para confirmarlo sustituye TbGridView por el CGridView original de Yii a ver si se reproduce el problema.

Yo probé Yiistrap pero me pareció que le falta "pulido" y por lo tanto regresé a Yii-Booster. Ocasionalmente lo chequearé a ver si ha mejorado pero mi filosofía es conservadora así que prefiero lo estable al "bleeding edge".

Buena suerte.

La verdad no soy experto, este es mi primer proyecto en YII (es pequeño el proyecto), y hasta el momento yii-strap me estaba funcionando con lo que necesitaba.

Cambie el widget por zii.widgets.grid.CGridView, y de todas formas me dice YES/NO :S

Sin ver más de tu código se me hace difícil encontrar la causa del problema. En resumen:

protected/config/main.php debe ser:




return array(

    'basePath' => dirname(__FILE__) . DIRECTORY_SEPARATOR . '..',

    'name' => 'My Web Application',

    'language' => 'es',

    'sourceLanguage' => 'en',

    //Resto del código



el view debe tener:




array(

    'name' => 'fun_activo',

    'type' => 'boolean',

    'value' => '$data->fun_activo',

    'headerHtmlOptions' => array('width' => '70px'),

),



Algo que se me acaba de ocurrir es que el datatype en la base de datos debe corresponder a "boolean": tinyint(1) unsigned en MySQL y bit en MS SQL Server. Verifica que no sea "number", "decimal", "float" ni otra cosa porque Yii lo detecta.

Hola,

Mira un poco este enlace Tipo boolean, espero que ayude.

Y sino puedes probar con funciones estáticas.

Un saludo