Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-03-2009 20:25:01

yegortitov
Membre
Date d'inscription: 21-11-2008
Messages: 17

Extjs + ZF : problème de grid

Bonjour à tous,

j'ai un soucis pour intégrer un grid extjs sous ZF.

Malgré les références à ces 2 sujets :

http://www.z-f.fr/forum/viewtopic.php?id=2215
http://www.z-f.fr/forum/viewtopic.php?pid=12602#p12602

Je n'arrive pas à alimenter mon tableau

J'ai ma partie json qui s'affiche en haut de page tandis que mon tableau est vide

Je vous remercie pour votre aide

Hors ligne

 

#2 03-03-2009 20:42:41

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Extjs + ZF : problème de grid

peux tu nous poster au moins en partie ce que fais ton code
A+JYT

Hors ligne

 

#3 03-03-2009 21:03:52

yegortitov
Membre
Date d'inscription: 21-11-2008
Messages: 17

Re: Extjs + ZF : problème de grid

bien sûr,

le voici

Code:

function indexAction()
    {
        $this->getFrontController()->setParam('noViewRenderer', true);
        header('Content-type: text/html; charset=iso-8859-1');
        
        $o_user = new Utilisateurs();
                
        $champs = $o_user->demo();
        $total = count($champs);
        $resultat = '{"total":"'.$total.'","data":'.json_encode($champs).'}';
        
        echo '<html>';
        echo '<head>';
        
        echo '<link rel="stylesheet" type="text/css" href="'.ROOT_ASSETS.'/js/extjs/resources/css/ext-all.css" />';
        echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/adapter/ext/ext-base.js"></script>';
         echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/ext-all.js"></script>';
        echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/examples/grid-filtering/menu/EditableItem.js"></script>';
        echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/examples/grid-filtering/menu/RangeMenu.js"></script>';
        echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/examples/grid-filtering/grid/GridFilters.js"></script>';
        echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/examples/grid-filtering/grid/filter/Filter.js"></script>';
        echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/examples/grid-filtering/grid/filter/StringFilter.js"></script>';
        echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/examples/grid-filtering/grid/filter/DateFilter.js"></script>';
        echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/examples/grid-filtering/grid/filter/ListFilter.js"></script>';
        echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/examples/grid-filtering/grid/filter/NumericFilter.js"></script>';
        echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/examples/grid-filtering/grid/filter/BooleanFilter.js"></script>';

        echo '<script type="text/javascript" src="'.ROOT_ASSETS.'/js/extjs/examples/grid-filtering/grid-filter.js"></script>';
    
        echo '<style type="text/css">
            .x-grid3-hd-row td.ux-filtered-column {   
            font-style: italic;  
            font-weight: bold;
        }        
        </style>';
  
    
        echo '<link rel="stylesheet" type="text/css" href="'.ROOT_ASSETS.'/js/extjs/examples/shared/examples.css" />';
        
        echo $resultat;
        
        echo '<body>';
        echo '<div id="grid-example" style="margin: 10px;"></div>';
        echo '</body>';
        echo '</head>';
        echo '</html>';
    }

Au niveau du js, il s'agit d'un fichier de extjs que je n'ai pas retouché (juste changé l'url). Il marche très bien hors ZF :

Code:

/*
 * Ext JS Library 2.2.1
 * Copyright(c) 2006-2009, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */

Ext.onReady(function(){
    Ext.menu.RangeMenu.prototype.icons = {
      gt: 'img/greater_then.png', 
      lt: 'img/less_then.png',
      eq: 'img/equals.png'
    };
    Ext.grid.filter.StringFilter.prototype.icon = 'img/find.png';
    
    // NOTE: This is an example showing simple state management. During development,
    // it is generally best to disable state management as dynamically-generated ids
    // can change across page loads, leading to unpredictable results.  The developer
    // should ensure that stable state ids are set for stateful components in real apps.
    Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
      
    var ds = new Ext.data.JsonStore({
      url:'mon url', <-- volontaire
    id: 'id',
    totalProperty: 'total',
    root: 'data',
    fields: [
      {name:'id'}, 
      {name:'company'}, 
      {name:'price'}, 
      {name:'date',type: 'date', dateFormat: 'Y-m-d H:i:s'}, 
      {name:'visible'}, 
      {name:'size'}
    ],
      sortInfo: {field: 'company', direction: 'ASC'},
      remoteSort: true
    });
  
    var filters = new Ext.grid.GridFilters({
      filters:[
        {type: 'numeric',  dataIndex: 'id'},
        {type: 'string',  dataIndex: 'company'},
        {type: 'numeric', dataIndex: 'price'},
        {type: 'date',  dataIndex: 'date'},
        {
          type: 'list',  
          dataIndex: 'size', 
          options: ['small', 'medium', 'large', 'extra large'],
          phpMode: true
        },
        {type: 'boolean', dataIndex: 'visible'}
    ]});
    
    var cm = new Ext.grid.ColumnModel([
      {dataIndex: 'id', header: 'Id'},
      {dataIndex: 'company', header: 'Company', id: 'company'},
      {dataIndex: 'price', header: 'Price'},
      {dataIndex: 'date',header: 'Date', renderer: Ext.util.Format.dateRenderer('m/d/Y')}, 
      {dataIndex: 'size', header: 'Size'}, 
      {dataIndex: 'visible',header: 'Visible'}
    ]);
    cm.defaultSortable = true;
    
    var grid = new Ext.grid.GridPanel({
      id: 'example',
      title: 'Grid Filters Example',
      ds: ds,
      cm: cm,
      enableColLock: false,
      loadMask: true,
      plugins: filters,
      height:400,
      width:700,        
      el: 'grid-example',
    autoExpandColumn: 'company',
      bbar: new Ext.PagingToolbar({
        store: ds,
        pageSize: 15,
        plugins: filters
      })
    });
    grid.render();
    
    ds.load({params:{start: 0, limit: 15}});
});

Hors ligne

 

#4 03-03-2009 21:23:02

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Extjs + ZF : problème de grid

tu ne dois pas faire de echo

tu fais un contrôleur tout ce qu'il a de plus normal qui produit une vue avec ton grid Extj dedans (sans aucune données) dans les paramètre du grid tu donne l'url d'une autre action de ton contrôleur pour les données

cet autre action va chercher les données et  ne retourne que les données en JSON

A+JYT

Hors ligne

 

#5 03-03-2009 21:26:10

yegortitov
Membre
Date d'inscription: 21-11-2008
Messages: 17

Re: Extjs + ZF : problème de grid

merci pour le conseil. Je vais tout de suite le mettre en oeuvre

@+

Super ça marche Merci

Dernière modification par yegortitov (03-03-2009 21:34:50)

Hors ligne

 

#6 03-03-2009 21:35:19

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Extjs + ZF : problème de grid

http://www.z-f.fr/forum/viewtopic.php?pid=12602#p12602
l'exemple de ce topic est exactement le genre de réponse qu'un grid attends du serveur

Code:

            $this->response = array(
                'success' => true,
                'results' =>count($data),
                'rows'=> $data
            );

results est le nombre de lignes que contient effectivement le tableau retourné
Rows ce sont les données elle-même
et tu peut ajouter count qui est le nombre total d'éléments lorsque c'est différent du nombre retourné (cas de la pagination)
A+JYT
il faut que je trouve le temps de poster un tuto complé
car c'est bigrement efficace

Dernière modification par sekaijin (03-03-2009 21:36:28)

Hors ligne

 

#7 04-03-2009 19:28:27

aityahia
Membre
Lieu: Béjaia
Date d'inscription: 29-07-2008
Messages: 10
Site web

Re: Extjs + ZF : problème de grid

Bonsoir,

j'arrive a intégré très biens ExtJS et Zend Framework

va sur mon blog  j'ai comencé un tuto qui traite justement sur ton problemes.




a+

Dernière modification par aityahia (04-03-2009 20:08:49)


[ZF 1.7][ExtJS 2.2]
Vistez mon Blog

Hors ligne

 

#8 05-03-2009 15:33:46

Saeba
Membre
Date d'inscription: 05-02-2008
Messages: 31

Re: Extjs + ZF : problème de grid

Bonjour,

Petit HS au sujet de la licence ExtJS. J'ai vu sur leur site que la licence pour 1 développeur vaut environ 285 €.
Avec cette licence 1 utilisateur, est ce que je peux développer une application utilisant ExtJs et la revendre à un client, ou bien faut il une autre licence spéciale ?
Merci d'avance,

Saeba.

Hors ligne

 

#9 10-02-2010 10:17:54

phifeshaheed
Membre
Date d'inscription: 06-05-2009
Messages: 29

Re: Extjs + ZF : problème de grid

sekaijin a écrit:

tu ne dois pas faire de echo

tu fais un contrôleur tout ce qu'il a de plus normal qui produit une vue avec ton grid Extj dedans (sans aucune données) dans les paramètre du grid tu donne l'url d'une autre action de ton contrôleur pour les données

cet autre action va chercher les données et  ne retourne que les données en JSON

A+JYT

Est je veux utiliser la datagrid Extjs sur un backoffice qui ets pour le moment HTML classique, c'est un backoffice crud et qui est basé sur un seul controleur crud générique et qui a donc une vu génrique pour afficher  chacune des tables (il y en a 20, il n'etait pas question que je fasse une vue spécifique à chaque tabe)  avec ses enregistrements etc...

ma questions est de savoir comment je peux faire pour passer tout cela sous ExtJs datagrid sachant que celui ci demande que je nomme explicitement toutes les colonnes de la table qui va etre affichée dans la vue?

je ne sais pas si ma question est assez claire... mais merci d'avance

Hors ligne

 

#10 10-02-2010 12:07:53

ichevc03
Nouveau membre
Date d'inscription: 01-09-2009
Messages: 3

Re: Extjs + ZF : problème de grid

Bonjour,
je vois 2 piste pour résoudre ton problème

1)
tu peux faire de j'heritage dans extjs.
Tu crees ton type qui etends ton gridpanel.
puis pour chaque table tu redefini le colmodel de ce nouveau type (ok tu as 20 tables differentes mais y a pas de copier collé de ta grid donc c'est maintenable).

2)
tu genere en php ton colmodel que tu passe a la vue et celleci  redefini(en javascript) le colonneModel de ta grid  (je ne sais pas si je suis comprehensible).

En esperant t'aider un peu ... (je ne suis pas expert extjs )


ichevc

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages