Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
peux tu nous poster au moins en partie ce que fais ton code
A+JYT
Hors ligne
bien sûr,
le voici
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 :
/* * 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
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
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
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
$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
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)
Hors ligne
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
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
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
Pages: 1