IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Integration du datagrid de extJs4


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 63
    Par défaut Integration du datagrid de extJs4
    Integration extJs 4 dans sf 1.4

    Je voudrais afficher les donnees de ma table Secteur qui possede deux champs; idsecteur et secteur dans une datagrid style extjs.

    Pour ce faire, j'ai decompresser l'archive extjs dans le dossier web/js de symfony.
    Dans le fichier view de l'application frontend, j'ai ajouter les lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    stylesheets:
        - ../js/extjs/resources/css/ext-all.css
     
      javascripts:
        - extjs/ext-all.js
        - grid.js
        - app.js
    Le contenu du fichier app.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    // when document is ready
     	Ext.onReady(function() {
     
     	    Ext.QuickTips.init();
     
     	    // create my custom grid component
     	    var grid = new App.country.Grid({
     
     	        store: store,  // data store for grid
     	        columns : columns,  //columns configuration
     	        plugins: [filters],  // additional plugin - Grid Filter Plugin
     	        bbar: new Ext.PagingToolbar({  //bottom bar configuration
     	            pageSize: 15,   // records per page
     	            store: store,
     	            displayInfo: true
     	        })
     	    });
     
     	    // simple window for grid
     	    var win = new Ext.Window({
     	        title: 'Advanced data filtering with Grid Filter Plugin',
     	        height: 410,
     	        width: 800,
     	        layout: 'fit',
     	        items: grid  // just one item
     	    });
     
     	    win.show();  // display window with grid
     
     	});
    Le contenu du fichier grid.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    // Typical data Store automatically configured with a Ext.data.JsonReader.
     	var store = new Ext.data.JsonStore({
     	    // store configs
     	    url: 'Secteurs/list',  // url for retreiving data
     	    autoLoad: true,
     	    // reader configs
     	    totalProperty: 'total',
     	    successProperty: 'success',  // response status name
     	    idProperty: 'idsecteur',
     	    root: 'data',
     	    fields: ['idsecteur', 'secteur']
     	});
     
     	// Columns configuration
     	var columns =  [
     	    {header: "ID", width: 50, fixed: true, sortable: true, dataIndex: 'idsecteur'},
     	    {header: "Secteur", width: 100, sortable: true, dataIndex: 'secteur' } 	  
     	];
     
     	Ext.ns('App', 'App.country');
     	// my custom grid component
     	App.country.Grid = Ext.extend(Ext.grid.GridPanel, {
     
     	    initComponent : function() {
     
     	        // typical viewConfig
     	        this.viewConfig = {
     	            forceFit: true,
     	            emptyText: 'No data found.'
     	        };
     
     	        App.country.Grid.superclass.initComponent.call(this);
     	    }
     	});

    Dans le module Secteur, fichier actions.class.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    public function executeList(sfWebRequest $request) {
     
    	     # data retrieved from the request
    	  $limit = $request->getParameter('limit', 15);
    	  $page = ($request->getParameter('start', 0)/$limit)+1;
    	  $dir = $request->getParameter('dir', 'ASC');
    	  $column = strtolower($request->getParameter('sort', 'name'));
     
     	   # create query object
     	  $query = Doctrine_Query::create()
     	      ->from('secteur c');
     
     	   # conditions for sorting
     	  if (Doctrine::getTable('Secteur')->hasColumn($column)) {
     
     	      $query->orderBy(sprintf('c.%s %s', Doctrine::getTable('secteur')->getFieldName($column), $dir));
     	  }
     
     	  # object responsible for paging
     	  $pager = new sfDoctrinePager('secteur', $limit);
     
     	  $pager->setQuery($query);
     	  $pager->setPage($page);
     	  $pager->init();
     
     	  $result = array();
     
     	   # format result array
     	  foreach($pager->getResults() as $secteur) {
     
     	      $result[] = $secteur->toArray();
     	  }
     
     	  # formatted data are returned to the grid
     	  return $this->renderText(json_encode(array(
     	      'success'    => true,
     	      'total'        => $pager->getNbResults(),
     	      'data'        => $result
     	  )));
     	}

    Mon probleme, je n'arrive pas à afficher les données dans le datagrdi.
    Mon fichier listSuccess.php affiche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"success":true,"total":39,"data":[{"idsecteur":"118","secteur":"Achats"},{"idsecteur":"119","secteur":"Administratif \/ Secr\u00e9tariat"},{"idsecteur":"120","secteur":"Agriculture \/ Agronomie"},{"idsecteur":"132","secteur":"Droit \/ Fiscalit\u00e9"}]}

  2. #2
    Membre émérite Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Par défaut
    Pour infos tu as un plugin ExtDirectPlugin pour symfony.

    Tu dois activer ExtDirect aussi du coté Extjs.

    Le plugin symfony te gère l'entrée et la sortie de symfony donc tu n'as plus besoin d'utiliser les template.

    Voila bon courage.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 63
    Par défaut
    Merci, je teste le plugin

  4. #4
    Membre émérite Avatar de kenny.kev
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    646
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 646
    Par défaut
    Tu vas gagner énormément de temps en utilisant ce plugin.

    N'hésite pas si tu as un problème d'utilisation du plugin. Par ailleurs, j'ai fait une évolution sur ce plugin car il y a un comportement bizarre avec un formulaire à 1 valeur (uniquement pour extjs 4 pas de soucis pour la v3).

Discussions similaires

  1. Colorer les lignes de datagrid Extjs4
    Par jerada dans le forum Ext JS / Sencha
    Réponses: 2
    Dernier message: 03/02/2014, 13h35
  2. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/02/2003, 17h19
  3. calcul integral en c
    Par Anonymous dans le forum C
    Réponses: 3
    Dernier message: 11/01/2003, 11h32
  4. [] Datagrid vide après modification des propriétés
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/09/2002, 16h37
  5. Réponses: 10
    Dernier message: 27/08/2002, 23h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo