DataGrid con Zend Framework

Por zsamer en Septiembre 11, 2008

Recuerdo en mi primer post, donde había prometido una serie de temas que iría tratando a lo largo del camino, afortunadamente se han ido cumpliendo las promesas, pero aun queda mucho.

Hoy es el día de compartir unos de mis proyecto que he estado trabajando desde hace algún tiempo, se trata del primero de la lista de promesas de mi 1º post, el Data Grid.

A pesar de que ya lo había terminado hace meses aun faltaba darle mayor facilidad de uso y hacer refactoring en algunos componentes para que quedara lo mejor posible.

Si aun estas interesado en como implementar un Data Grid con Zend Framework continua leyendo.

Zend Framework Data Grid es un proyecto/componente escrito en PHP5, desarrollado especialmente para trabajar con Zend Framework, tiene como finalidad generar grillas o listados a partir de un Data Source tales Zend_Db_Table, Zend_Db_Select, Zend_Db_Adapter, Propel, Array, etc. Con funcionalidades de ordenar por columnas (sort/order by), paginado y un render adecuado según el tipo de columna.

Puedes descargar las librerías mediante SVN en el siguiente link, o bien descargarlo directamente aquí.

Una ves que hayan hecho checkout o descargado y tengan una copia del repositorio deben copiar la carpeta Core dentro de la carpeta library de nuestro proyecto (donde mismo está Zend Framework, etc).

Bueno, muchos se preguntaran porque diablos la librería esta dentro de un package/namespace llamado Core y no Zsamer como en mi anterior proyecto Implementar ORM en Zend Framework Db Table, mmm en realidad una muy buena pregunta, pero la respuesta tambien es buena. La respuesta es porque yo utilizo namespace Zsamer para todas mis librerias que extienden directamente de alguna clase/componente de Zend Framework y además de los Helpers View, Helpers Action y Plugins. Mientras que el namespace Core es donde yo guardo mis propios componentes, que no extienden ni sobrescriben a los componentes de ZF aunque si los utilizan.

Por defecto utiliza Zend_View, esto implica que hay que agregar el script-path de la vista del Data Grid (grid.phtml) al objeto Zend_View, esto puede ser en el index/Bootstrap o bien en el metodo init de nuestro controlador:

PHP:
  1. <?php
  2. class Cms_GridController extends Zend_Controller_Action
  3. {
  4.     public function init()
  5.     {
  6.         $this->view->baseUrl = $this->_request->getBaseUrl();
  7.         $this->view->addScriptPath(Core::getBaseDir() . DIRECTORY_SEPARATOR . 'skins/scripts/datagrid/');
  8.     }
  9. }

Cada columna del Data Grid es un objeto que implementa cierta interfaz, cada objeto tiene cierta definición en su tipo de dato, según este es como será mostrado (render). Entre los tipos de columnas tenemos los siguientes: String (por defecto), Text (Long Text), Números, Options, Links(url) y Acciones (Ver, Editar, Eliminar). Quedando la posibilidad de agregar más tipos de render a medidas como podría ser un Fecha(Date/DateTime), Precio(Currency), ComboBox(Select Options) etc.

Por defecto si no se especifican los objetos de las columnas se crearan estos objetos según las columnas/campos de la Tabla(Base de Datos) o Array, etc, en general del Data Source, con el tipo/formato(type) string.

Clase Model Project

PHP:
  1. <?php
  2. class Project extends Zend_Db_Table
  3. {
  4.     protected $_primary = 'id';
  5.  
  6.     protected $_name = 'project';
  7. }

Ejemplo con Zend_Db_Table

PHP:
  1. <?php
  2. require 'cms/models/Project.php';
  3.  
  4. class Cms_GridController extends Zend_Controller_Action
  5. {
  6.         public function init()
  7.         {
  8.                 $this->view->baseUrl = $this->_request->getBaseUrl();
  9.  
  10.                 $this->view->addScriptPath(Core::getBaseDir() . DIRECTORY_SEPARATOR . 'skins/scripts/datagrid/');
  11.         }
  12.  
  13.         public function testAction()
  14.         {       
  15.                 $grid = new Core_DataGrid(new Core_DataGrid_DataSource_Table(new Project()), 5);
  16.                
  17.                 $grid->setDefaultSort('title')
  18.                      ->setDefaultDir("asc");
  19.  
  20.                 /* Si necesitamos agregar algún criterio o condición */
  21.                 /* podemos obtener el objeto Zend_Db_Table_Select */
  22.                 $grid->getSelect()->where('is_active = ?', 1);
  23.                
  24.                echo $grid;
  25.         }
  26. }

Ejemplo de uso con Zend_Db_Select con Columnas

PHP:
  1. <?php
  2. class Cms_GridController extends Zend_Controller_Action
  3. {
  4.         public function init()
  5.         {
  6.                 $this->view->baseUrl = $this->_request->getBaseUrl();
  7.  
  8.                 $this->view->addScriptPath(Core::getBaseDir() . DIRECTORY_SEPARATOR . 'skins/scripts/datagrid/');
  9.         }
  10.  
  11.         public function testAction()
  12.         {
  13.                 $grid = new Core_DataGrid(new Core_DataGrid_DataSource_DbSelect(), 5);
  14.                
  15.                 $grid->setDefaultSort('title')
  16.                      ->setDefaultDir("asc");
  17.                
  18.                 $grid->getSelect()->from('project');
  19.  
  20.                 $titulo = new Core_DataGrid_Column('link', 'Title', null , 'left');
  21.  
  22.                 $titulo->setLinks($this->view->baseUrl . '/cms/grid/view/id/$id/');
  23.                
  24.                 $grid->addColumn('title', $titulo);
  25.  
  26.                 $grid->addColumn('description', new Core_DataGrid_Column('text', 'Description', null , 'left'));
  27.                
  28.                 $grid->addColumn('updated_at', new Core_DataGrid_Column('text', 'Last Modified', 180));
  29.  
  30.                 $grid->addColumn('is_active', array('header' => 'Status',
  31.                                                     'width' => 80,
  32.                                                     'type' => 'options',
  33.                                                     'options' => array(0 => 'Disabled',
  34.                                                                        1 => 'Enabled')));
  35.                        
  36.                echo $grid;
  37.  
  38.         }
  39. }

Más ejemplos los encontraran en el sitio web del proyecto, específicamente en la wiki del proyecto.

Ahora solo nos falta la hoja de estilo para darle un look and feel adecuado:

CSS:
  1. #paginglinks{
  2.     margin: 5px auto 5px auto;
  3.     clear: both;
  4. }
  5.  
  6. .pagelink,
  7. .pagelinklast,
  8. .pagecurrent{
  9.     background: transparent;
  10.     border: 1px solid #212121;
  11.     padding: 1px 3px 1px 3px;
  12. }
  13.  
  14. .pagelinklast{
  15.     background: #999;
  16. }
  17.  
  18. .pagecurrent{
  19.     background: #999;
  20. }
  21.  
  22. div.grid-header-button {
  23.     background-color: transparent;
  24.     text-align: right;
  25.     padding: 0;
  26.     margin: 0;
  27. }
  28.  
  29. div.grid-header-button input{
  30.     margin: 5px;
  31. }
  32.  
  33. table.grid{
  34.     border-top: 1px solid #DFDFDF;
  35.     border-right: 1px solid #DFDFDF;
  36.     width: 100%;
  37. }
  38.    
  39. tr.rowHead {
  40.     background-color: #eee;
  41. }
  42.  
  43. tr.rowHead th.first-cell{
  44.     border-left: 1px solid #DFDFDF;
  45. }
  46.  
  47. tr.rowHead th{
  48.     padding: 5px;
  49.     color: #000;
  50.     font-size: 9pt;
  51.     font-weight : bold;   
  52.     border-top: 3px solid #F7F5EE;
  53.     border-bottom: 3px solid #FEBE47;
  54.     border-left: 1px solid #fff;
  55.     background-color: #ECE9D8;
  56. }
  57.  
  58. tr.rowHead th:hover{
  59.     background-color: #FAF9F4;
  60.     color: #ccc;
  61. }
  62.  
  63. tr.rowHead th a{
  64.     display: block;
  65. }
  66.  
  67. tr.rowFoot {
  68.     background-color: #eee;
  69. }
  70.  
  71. tr.rowFoot td{
  72.     padding: 2px;
  73.     color: #000;
  74.     font-size: 9pt;
  75.     font-weight : bold;   
  76.     /*border-top: 3px solid #F7F5EE;*/
  77.     border-bottom: 2px solid #FEBE47;
  78.     border-left: 1px solid #fff;
  79.     background-color: #ECE9D8;
  80. }
  81.  
  82. tr.rowFoot td.first-cell{
  83.     border-left: 1px solid #DFDFDF;
  84. }
  85.  
  86. tr.rowEven {
  87.     background-color: #eee;
  88. }
  89.  
  90. tr.rowEven:hover {
  91.     background-color: #FFFFDD;
  92.     color: #000000;
  93. }
  94.  
  95. tr.rowEven td{
  96.     border-bottom: 1px solid #99BAF3;
  97.     border-left: 1px solid #DFDFDF;
  98.     padding: 5px;   
  99. }
  100.  
  101. tr.rowOdd {
  102.     background-color: #fff;
  103. }
  104.  
  105. tr.rowOdd:hover {
  106.     background-color: #D9E8F9;
  107.     color: #000000;
  108. }
  109.  
  110. tr.rowOdd td{
  111.     border-bottom: 1px solid #99BAF3;
  112.     border-left: 1px solid #DFDFDF;
  113.     padding: 5px;   
  114. }

Los iconos de view, edit y delete vienen en el repositorio del proyecto en la carpeta "/public/images".

El resultado del DataGrid quedaría así:

 

Por supuesto que cada uno puede modificar el css y personalizar el estilo, diseño y colores del DataGrid.

Cualquier duda, problema, comentarios, criticas, sugerencias, errores/bugs etc, serán muy bienvenidos.

Lamentablemente hemos llegado al final del artículo, pero como siempre vienen más en camino. Para el próximo post tienen que estar atentos ya que veremos como implementar Bread Crumb (Miguitas de Pan) con un Zend View Helper

Espero que haya sido de utilidad.

:-)

Comentarios

45 Responses to “DataGrid con Zend Framework”

  1. Olagato on Septiembre 12th, 2008 6:36 am

    Sin duda un proyecto a tener en cuenta. Para mí la cosa estará entre esto y/o la integración con ExtJs. No termino de congeniar con YUI aunque quizás sí para algunos componentes aislados como el YCalendar. Buen trabajo, enhorabuena!

  2. meneame.net on Septiembre 12th, 2008 4:54 pm

    DataGrid con Zend Framework…

    Zend Framework Data Grid es un proyecto/componente escrito en PHP5, desarrollado especialmente para trabajar con Zend Framework, tiene como finalidad generar grillas o listados a partir de un Data Source tales Zend_Db_Table, Zend_Db_Select, Zend_Db_Ada…

  3. lisandro on Septiembre 15th, 2008 2:05 pm

    Excelente trabajo !!, todo es muy bueno aca, la programación, los ejemplos, las explicasiones, un programador promedio puede hacer grandes cosas después de pasar por aca ;). Ya mismo estoy haciendo chechout e implementandolo en un proyecto.

    Felicidades por el lanzamiento !

  4. zsamer on Septiembre 15th, 2008 6:32 pm

    gracias lisandro, feliz de compartir mis trabajos y experiencias.

    un abrazo.

  5. lisandro on Septiembre 17th, 2008 7:28 pm

    Andrés, como dije antes, lo estoy usando en un proyecto y funciona perfecto, tuve que hacerle una pequeña modificación para incluir una imagen Thumb en uno de los campos (guardo el nombre en la db) asi que tomé como referencia lo de ->setLinks() y queria saber si es posible que en el futuro incluyas algo similar ?

    gracias.

  6. zsamer on Septiembre 21st, 2008 11:37 pm

    Si, ningún problema incluirlo, a groso modo sólo basta con agregar una nueva clase en Column_Render y del tipo image (Core_DataGrid_Column_Renderer_Image) y el método render deberá hacer render correspondiente incluyendo el tag html img.

  7. Sergio on Septiembre 29th, 2008 9:21 pm

    Muy bueno, espero poder utilizarlo pronto :) Gracias.

  8. Martin on Octubre 10th, 2008 9:37 pm

    Exelente proyecto! estaba muy acostumbrado al datagrid de pear y la verdad q encontrar esto para zend es fantasito..

    me gustaria saber si planeas documentar los metodos mas ma fondo tambien

    Desde ya muchas gracias

  9. zsamer on Octubre 10th, 2008 11:15 pm

    Gracias Martín, en algún momento pienso documentar los métodos y atributos de las clases.

    saludos,

  10. Martin on Octubre 14th, 2008 5:48 pm

    zsamer, te molesto una ves mas con esto :P

    el problema que estoy teniendo ahora es el siguiente, x ejemplo si en mi db tengo una fecha guardada en unix timestamp cuando la quiero mostrar en la columna quiero aplicarle un formato, estube un rato probando con el metodo format pero no logre exito alguno… recuerdo q en el caso de pear cuando definias las columnas podias indicarle un metodo externo a llamar para darle formato a los datos de esa columna..

    me gustaria saber si es que estoy usando mal el metodo format, si talves implementastes o es simple de implementar la posiblidad de llamar a un metodo externo para darle formato a los datos de una columna talves.. o si en realidad darle ese formato tendria que hacerlo en el modelo de mi tabla y no en el datagrid (soy nuevo en MVC y aun tengo dudas)

    en el caso del unix timestamp creando un metodo Core_DataGrid_Column_Renderer_unixTimestamp podria solucionarlo, pero mi pregunta es mas general, dado que necesito dar formato a distintos datos..

    Saludos y desde ya muchas gracias
    Martin

  11. Ashley on Octubre 14th, 2008 6:27 pm

    Many thanks for your grid class. I am using Smarty for page rendering in my ZF system. Does anyone have a Smarty version of the ‘grid.phtml’ template file. It’s all that is stopping the page displaying right now.

    Spanish courtesy of Google Translate:

    Muchas gracias por su red de clase. Estoy utilizando la página Smarty para hacer en mi sistema ZF. ¿Alguien tiene una versión de Smarty el ‘grid.phtml’ archivo de plantilla. Es todo lo que es detener la página que muestra ahora.

  12. zsamer on Octubre 15th, 2008 1:39 am

    hi Ashley, you have to create the smarty class render and this has to implement the interface render an extends the abstract class:

    see to example:

    class Core_DataGrid_Render_Smarty extends Core_DataGrid_Render_Abstract implements Core_DataGrid_Render_Interface
    {
    protected $_template = null;

    public function init()
    {
    $this->setTemplate(’grid.tpl’);
    }

    public function setTemplate($templateName)
    {
    $this->_template = $templateName;
    return $this;
    }

    public function getTemplate()
    {
    return $this->_template;
    }

    public function render()
    {
    // here the code for smarty
    if (!$templateName = his->getTemplate())
    {
    return ”;
    }
    $smarty = new Smarty();
    $smarty->template_dir = ‘/myProject/skins/scripts/datagrid’;
    $baseUrl = Zend_Controller_Front::getInstance()->getRequest()->getBaseUrl();
    $smarty->assign(’baseUrl’,$baseUrl);
    $smarty->assign(’grid’,$this->getGrid());
    $smarty->assign(’pager’,$this->getGrid()->renderPager());
    // return the display not print
    //return $smarty->display($templateName);
    return $smarty->fetch($templateName);
    }
    }

    Finally you have to create the template grid.tpl
    look the ZendView template (skins\scripts\datagrid\grid.phtml) and transform to smarty.

    In the controller
    /* etc… bla bla bla*/

    // echo $grid (anymore)

    //now
    echo $grid->render(’Smarty’);

    ;-)

  13. zsamer on Octubre 15th, 2008 2:08 am

    Hola Martin ,

    puedes crearte una clase Column_Render y del tipo unixtimestamp (Core_DataGrid_Column_Renderer_UnixTimestamp) y el método render podrá implementar el formato.

    ej:
    class Core_DataGrid_Column_Renderer_UnixTimestamp extends Core_DataGrid_Column_Renderer_Abstract
    {
    public function render($row)
    {

    $text = parent::_getValue($row);

    // dar formato a $text
    return $text;
    }
    }

    Luego en la clase Core_DataGrid_Column tienes que agregar en el método _getRendererByType en el case lo siguiente:
    case ‘unixtimestamp’:
    $rendererClass = ‘Core_DataGrid_Column_Renderer_UnixTimestamp’;
    break;

    y listo.

  14. Martin on Octubre 15th, 2008 1:11 pm

    zsamer, te agradesco tu respuesta, eso ya lo habia echo x ejemplo para renderear imagenes.. lo que me gustaria saber es si es posible x ejemplo.. decirle que el render de una columna dada va a ser una funcion/metodo auxilar..

    x ejemplo:

    $miColumnaConRenderAux = new new Core_DataGrid_Column(’text’, ‘Col con render raro’, null , ‘left’, acaLlamarAMiFuncionQueRenderea(’$id’));

    no se si se entiende. voy a buscar en la Doc de pear un ejemplo de lo que digo…

    Muchas gracias x tus respuestas, estas en algun foro (zzform.es FdW o algun otro donde te pueda encontrar?)

  15. Ashley on Octubre 15th, 2008 5:09 pm

    I found I didn’t need to create any new classes.

    I created my smarty template file as:

    {assign var=numColumns value=$grid->getColumnCount()}

    {foreach from=$grid->getColumns() item=_column}
    getHtmlProperty()} />
    {/foreach}

    {foreach from=$grid->getColumns() item=_column}
    getHeaderHtmlProperty()}>
    {$_column->getHeaderHtml()}

    {/foreach}

    {if $grid->count()>0}
    {foreach from=$grid->getIterator() key=_index item=_item}

    {foreach from=$grid->getColumns() item=_column name=coldata}
    getStyleProperty()} class=”{$_column->getCssProperty()} {if $smarty.foreach.coldata.iteration==$numColumns}last{/if}”>
    {if $_column->getRowField($_item)!=”}{$_column->getRowField($_item)}{else} {/if}

    {/foreach}

    {/foreach}
    {elseif $grid->getEmptyText()}

    grid->getEmptyTextClass()}” colspan=”100″>
    {$grid->getEmptyText()}

    {/if}

    {if $pager}

    {$pager}

    {/if}

    and that worked for me!

  16. Ashley on Octubre 15th, 2008 5:11 pm

    Actually the blog just screwed my code in \

    so I’ll \


    {assign var=numColumns value=$grid->getColumnCount()}

    {foreach from=$grid->getColumns() item=_column}
    getHtmlProperty()} />
    {/foreach}

    {foreach from=$grid->getColumns() item=_column}
    getHeaderHtmlProperty()}>
    {$_column->getHeaderHtml()}

    {/foreach}

    {if $grid->count()>0}
    {foreach from=$grid->getIterator() key=_index item=_item}

    {foreach from=$grid->getColumns() item=_column name=coldata}
    getStyleProperty()} class="{$_column->getCssProperty()} {if $smarty.foreach.coldata.iteration==$numColumns}last{/if}">
    {if $_column->getRowField($_item)!=''}{$_column->getRowField($_item)}{else} {/if}

    {/foreach}

    {/foreach}
    {elseif $grid->getEmptyText()}

    grid->getEmptyTextClass()}" colspan="100">
    {$grid->getEmptyText()}

    {/if}

    {if $pager}

    {$pager}

    {/if}

  17. Ashley on Octubre 15th, 2008 5:12 pm

    no that didn’t work either. give me an email address and I’ll send you teh code block so you can add it in your blog for others to use..

  18. Francisco on Octubre 20th, 2008 3:39 pm

    Estimado, felicitaciones por la pagina. Baje el archivo DataGrid y al intentar probarlo integrarlo en un proyecto y probarlo con una query propia,

    me tira un error.

    Warning: Zend_Loader::include_once() [function.include]: Failed opening ‘Core.php’ for inclusion (include_path=’.;C:\wamp\www\miproyecto/lib/;C:\wamp\www\miproyecto/application/models;C:\wamp\www\ZendFrameworkExample\library.;C:\wamp\php\PEAR’) in C:\wamp\www\miproyecto\lib\Zend\Loader.php on line 83

  19. zsamer on Octubre 20th, 2008 4:20 pm

    Obviamente, Core::getBaseDir() tienes que cambiarlo por tu propio directorio base del poryecto.

    Yo uso la clase Core para estos efectos en mi framework, si necesitas saber sobre esta clase y sus métodos leete el anterior post , ahí esta su implementación:

    http://bolsadeideas.cl/zsamer/2008/05/bootstrap-class/

  20. Nicolas on Octubre 27th, 2008 2:02 pm

    Hola

    Your work is very good and works perfectly !!!
    i have a few questions for you:
    1)
    But I’m looking for something witch could help me using the Edit fonction ! For example, if I click on the Edit link, I’d like to modify the datas of my row ! Something like that ! Can you explain me (and for everybody who is looking for doing this thing) how could I do this ?

    2)
    I’d like to put some radio button, check box, input select… in my grid ! Is there a way to do that in your frammework ? Or how I could I do this from my controller ?

    Gracias para tu trabajo y para tu consejos !

    nicolas

  21. Nicolas on Octubre 27th, 2008 2:07 pm

    (re)
    regarding the first question (how to use the edit fonction), I’d like that some appears in my grid for change the datas :)
    Thanks a lot !!

  22. zsamer on Octubre 27th, 2008 3:14 pm

    Hola Nicolas:

    1) Example Zend_Db_Table whith Columns and Controls (View, Edit, Delete):
    http://code.google.com/p/zend-framework-datagrid/wiki/ExampleTable

    2) for now is’t implemented

  23. Daniel on Noviembre 18th, 2008 10:51 am

    Muchas gracias Zsamer, he estado haciendo todos los tutoriales de tu blog y me han ido geniales. Desde ya estas en mi lector de feeds.
    Muchas gracias y sigue así.

  24. zsamer on Noviembre 24th, 2008 11:59 am

    Daniel, un gusto leer tu comentario. Gracias a ti por ser mi lector ;-)

  25. Widipa on Noviembre 25th, 2008 3:43 am

    Estoy haciendo el ejemplo, pero donde consigo el cms/models/Project.php

    no esta en el svn del data grid

  26. zsamer on Noviembre 25th, 2008 12:24 pm

    Son ejemplos de modelo, el quie usé para el ejemplo es
    class Project extends Zend_Db_Table
    {
    protected $_primary = ‘id’;

    protected $_name = ‘project’;
    }

  27. amarcucci on Diciembre 9th, 2008 9:43 pm

    Saludos zsamer, muy bueno tu grid, he podido integrarlo con mi aplicacion sin mucho problema y soy nuevo al ZF.

    Una pregunta, como puedo cambiar el texto de: Next, Prev, Ir a Pagina y No records found?

    Gracias de antemano

  28. zsamer on Diciembre 9th, 2008 10:06 pm

    Hola amarcucci:
    En la clase Core_DataGrid_Pager_Abstract puedes cambiar el texto de los atributos directamente:

    protected $_next = ‘Siguiente»’;
    protected $_previous = ‘« Atrás’;

    Después voy hacer este tema más configurable y fácil, como obtener del objeto grid el objeto paginador y hacer los setter y getter respectivos.

    Respecto a No records found:
    $grid->setEmptyText(”no hay registros”);

  29. Jean Rumeau on Diciembre 13th, 2008 5:00 pm

    Super buen trabajo zsamer, hace un tiempo andaba en busca de algo asi y tuve que hacer una tabla. pero este componente esta super bueno.

    No se si planeas seguir desarrollandolo por ahora, pero algunas recomendaciones para el futuro serian.

    1 .- Pasar el DataSource a Zend_Paginator y crear adaptadores de DataSource en funcion de Zend_Paginator, por ejemplo, configurar arrays, DBSelect, o DBTableSelect, antes de pasarselo al Paginador.

    2.- Pasar el render a partials, en vez de desplegarlos directamente desde el componente, asi pueden ser manejados por el mismo objeto view.
    por ejemplo: $grid->setDefaultViewScript(’grid.phtml’)

    3.- Los Column_Render, podrias pasarlos a Grid_View_Helper_

    mmm te comentaria mas cosas pero el lugar no es muy optimo.

    De todas maneras muy buen trabajo y saludos.

  30. Top Posts 2008 | Zend Framework: Estado del Arte on Enero 11th, 2009 4:25 am

    [...] DataGrid con Zend Framework [...]

  31. paolo on Marzo 6th, 2009 6:11 pm

    Hola zsamer muy bueno el post estamos tratando de hacer algo asi hasta que encontramos este blog, mira he tenido un problema me sale el siguiente error

    Catchable fatal error: Argument 1 passed to Zend_View_Helper_PaginationControl::paginationControl() must be an instance of Zend_Paginator, instance of Core_DataGrid given in D:\MobiusWS\Quantum\library\Zend\View\Helper\PaginationControl.php on line 88

    alguna idea de el porque estare agradecido?

  32. paolo on Marzo 6th, 2009 6:30 pm

    disculpa por el post anterior el error era mio estaba usando el paginator y no estaba cambiando la vista correcta

    pero ahora si este error debe de ser algo de pats pero no encuentra mi grid.phtml

    Warning: script ‘grid.phtml’ not found in path (user-manager\_partials\;D:\MobiusWS\Quantum\\application\default\views\scripts\) in D:\MobiusWS\Quantum\library\Core\DataGrid\Abstract.php on line 273

    que podra ser?

  33. paolo on Marzo 6th, 2009 9:34 pm

    Todo esta okey gracias pero tengo una duda mas
    mira es que resulta que quiero dar acciones con javascrpit desde un colum (editar) para ello debo recuperar la id de lo que este editando como en el ejemplo pero como o de donde recupero ese id?
    gracias

  34. paolo on Marzo 6th, 2009 10:45 pm

    una ves mas gracias el id lo consigo simplemente de las columnas de la consulta a la base de datos y ya

  35. ZfNoob on Mayo 24th, 2009 2:01 am

    Como utilizo la lib core con ZF 1.8??

    me tira este error:
    Class ‘Core_DataGrid’ not found

  36. ZfNoob on Mayo 24th, 2009 5:42 am

    ya lo solucione jejeje… en el Bootstrap.php

    debo crear algo asi:


    protected function _initLibraryNamespaces()
    {
    $loader = Zend_Loader_Autoloader::getInstance();
    $loader->registerNamespace('Places_');
    $loader->registerNamespace('Core_');
    }

  37. Matias on Mayo 26th, 2009 3:08 am

    Hola, gracias por todos los tutos y tus proyectos.

    queria saber como hacer para saber el Id para agregarlo a la url:

    $titulo->setLinks($this->view->baseUrl . ‘/post/?id=$id’);

    espero q me puedan ayudar…

    gracias

  38. Carlos on Junio 6th, 2009 6:52 pm

    Buenas Zsamer.

    He sido alumno suyo en el curso de iniciación al ZF, el cual no puder terminar al 100% por motivos familiares, pero ya me he puesto bastante al día. Ahora estaba probando tu grid, algo que me parece fantástico y super útil.

    No obstante, hecho en falta un par de aspectos:

    a) exportación de los listados a pdf, excel, word, html, impresión… bla bla bla (cuando termine de echarle un ojo general y mi miniproyecto de prueba esté listo me pongo con ello)

    b) Filtros. Es decir, dar la posibilidad de que en la primera fila de la tabla, antes de las cabeceras, haya algunos input para poner texto y que filtre por ellos. ¿Esto segundo se puede hacer ya y no lo he visto?

    Gracias por tu tiempo!
    Carlos.

  39. Javier on Junio 30th, 2009 7:24 pm

    Estimado Zsamer, felicidades por el excelente trabajo que has realizado.

    Dos preguntas:
    1. ¿Hay disponible algún manual?

    2. ¿Cómo puedo implementar columnas tipo “action” como las que pones en tus ejemplos imágenes y links si pulsa la imagen pero “donde no aparezca ni la imagen ni el link si el valor del campo es NULL”?

    Gracias anticipadas por tu respuesta.

  40. yesid on Octubre 8th, 2009 8:01 pm

    Hola Zsamer, felicidades por el excelente aporte. En un proyecto que realice con ZF 1.7 utilice apliamente el Datagrid, me funciono a la perfección. Pero lamentablemente en este momento estoy realizando otro trabajo, con ZF 1.9.2 pero me arrojo este error al utilizar cualquier datasource.

    Me puedes dar una mano para determinal cual puede ser el problema.

    adjunto un trozo del codigo de pruebas.

    Core_DataGrid_Exception: Invalid Parmas for DataGrid: ‘page’: You must give a non-empty value for field ‘page’ in /var/siulnet/pagoagil/library/Core/DataGrid.php on line 113

    $grid = new Core_DataGrid(
    new Core_DataGrid_DataSource_Table(
    new Model_DbTable_Usuarios()), 10);
    $grid->setDefaultSort(’id’)
    ->setDefaultDir(”asc”);
    $this->view->grid = $grid;

    De antemano gracias por su tiempo y ayuda.

    Saludos Cordiales.

  41. Jorge on Octubre 20th, 2009 4:59 pm

    Hola yesid… no se si has podiso solucionar tu problema de una manera mas elegante ( de ser asi agradezco publiques la solucion ) pero yo lo solucione modificando el archivo “library/Core/DataGrid.php”

    Cerca de la linea donde te sale el error modicala la clase para que queda asi.. con eso arregle mi problema, espero q tambien te sirva!!!

    if(empty($_params)){
    $_params = Zend_Controller_Front::getInstance()->getRequest()->getParams();
    $_params["page"] = (int)$_params["page"];
    }

  42. Quim on Octubre 29th, 2009 1:13 pm

    Buenos días,

    Soy nuevo en esto y tengo el siguiente problema:

    He descargado el Zend Framework Quickstart y he conseguido que me funcione correctamente, pero
    ¿como hago para añadir este genial Grid al proyecto para poder usarlo?

    Desde ya gracias

  43. James Stuart Milne on Octubre 29th, 2009 3:35 pm

    Muy bueno. Hace poco empece con el zend, y esto me solucionó un problema en minutos. Voy a ir estudiando el codigo para mejorar mi experiencia en Zend Framework.
    Hay algun parametro que le pueda pasar a grid para que me acepte los como [enters] en vez de aplicarle la funcion htmlspecialchars().
    Mill Gracias igual MUY BUENO

  44. zsamer on Octubre 29th, 2009 3:48 pm

    James Stuart impecable ;-)

  45. Javier on Enero 6th, 2010 2:13 pm

    Hola, quisiera saber como funciona la tipo ‘option’
    ya que quiero saber si funciona como condicional es decir que me despliegue cierta informacion segun los datos que traiga de la bd.

    Tengo que decir que el proyecto es genial, muy buen trabajo!

Deja tu comentario




XHTML: puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>