Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#26 17-02-2012 09:58:00

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Utilisation ZfDataGrid

Oula qu'est-ce que c'est que cette adresse...

http://127.0.0.1/norc2/public/ <= là il vaudrait mieux faire un VHost qui pointe directement là dessus (même si ce n'est pas forcément un problème, vous risquez d'avoir des erreurs d'affichage des choses se trouvant dans /public.

perimetre/get-data/format/json <= là je suis d'accord

?_search=false&nd=1329468227069&rows=10&page=1&sidx=Num_Perimetre&sord=asc <= c'est quoi ? Avec le routeur par défaut, les routes sont les suivantes :

- :module/:coontroller/:action/*
- :controller/:action/*

L'étoile signifie que vous pouvez ajouter /paramName/paramValue autant de fois que vous voulez à la fin de l'url.

http://127.0.0.1/norc2/public/perimetre … e/sord/asc

Ceci dit normalement ça devrait aussi fonctionner avec les paramètres suivant le ?

Avez vous essayé de vous rendre sur http://127.0.0.1/norc2/public/perimetre … ormat/json ?

Hors ligne

 

#27 17-02-2012 10:08:51

audrey
Membre
Date d'inscription: 14-02-2012
Messages: 23

Re: Utilisation ZfDataGrid

J'ai l'erreur suivante :
Message: Action "getData" does not exist and was not trapped in __call()

Hors ligne

 

#28 17-02-2012 10:14:24

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Utilisation ZfDataGrid

Vous n'avez pas créé getDataAction() dans PerimetreController ?

Hors ligne

 

#29 17-02-2012 10:18:36

audrey
Membre
Date d'inscription: 14-02-2012
Messages: 23

Re: Utilisation ZfDataGrid

j'avais fait une faute de frapper maintenant j'ai une autre erreur
Fonction getDataAction()

Code:

[lang=php]
 public function getDataAction() {
        $this->_helper->layout->disableLayout();
        $page=$this->_request->getParam("page",1);
        $limit=$this->_request->getParam("rows");
        $sidx=$this->_request->getParam("sidx",1);
        $sord=$this->_request->getParam("sord");
        $tabela = new Application_Model_DbTable_Perimetre();
        $perimetre = $tabela->fetchAll();
 
        $count = count( $perimetre );
 
        if( $count >0 ) {
            $total_pages = ceil($count/$limit);
        } else {
            $total_pages = 0;
        }
 
        if ($page > $total_pages)
            $page = $total_pages;
 
       $perimetre = $tabela->fetchAll(null, "$sidx $sord", $limit, ($page*$limit-$limit));
 
        $responce->page = $page;
        $responce->total = $total_pages;
        $responce->records = $count;
        $i=0;
 
        foreach($perimetre as $row) {
            $responce->rows[$i]['id']=$row->Num_Perimetre;
            $responce->rows[$i]['cell']=array(
                      $row->Num_Perimetre,
                    $row->Num_Paire,
                    $row->Assignation,
                    $row->Localisation                
            );
            $i++;
        }
       $this->view->donnees = $responce;
    }

et j'ai une autre erreur :
Exception information:

Message: SQLSTATE[42S22]: Column not found: 1054 Unknown column '1 ' in 'order clause'

Stack trace:

#0 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Statement.php(300): Zend_Db_Statement_Pdo->_execute(Array)
#1 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Adapter\Abstract.php(479): Zend_Db_Statement->execute(Array)
#2 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Adapter\Pdo\Abstract.php(238): Zend_Db_Adapter_Abstract->query(Object(Zend_Db_Table_Select), Array)
#3 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Table\Abstract.php(1529): Zend_Db_Adapter_Pdo_Abstract->query(Object(Zend_Db_Table_Select))
#4 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Db\Table\Abstract.php(1344): Zend_Db_Table_Abstract->_fetch(Object(Zend_Db_Table_Select))
#5 C:\Program Files\Zend\Apache2\htdocs\norc2\application\controllers\PerimetreController.php(30): Zend_Db_Table_Abstract->fetchAll(NULL, '1 ', NULL, 0)
#6 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Action.php(516): PerimetreController->getDataAction()
#7 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Dispatcher\Standard.php(295): Zend_Controller_Action->dispatch('getDataAction')
#8 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#9 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
#10 C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#11 C:\Program Files\Zend\Apache2\htdocs\norc2\public\index.php(25): Zend_Application->run()
#12 {main}

Hors ligne

 

#30 17-02-2012 10:22:47

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Utilisation ZfDataGrid

On dirait bien que $sidx vaut 1, or il faudrait que ce soit une string correspondant à un nom de colonne de ta table...

D'ailleurs la séparation des données et des controlleurs est moyenne ici...

Ceci dit, tu peux utiliser des Zend_Debug::dump($value); pour afficher tes valeurs, éventuellement suivi d'un vieux exit; pour ne pas passer au rendering de la vue smile Ca te permettrait de voir si tes valeurs sont bien affectées !

Hors ligne

 

#31 17-02-2012 10:31:20

audrey
Membre
Date d'inscription: 14-02-2012
Messages: 23

Re: Utilisation ZfDataGrid

Tu ne connaîtrais pas un tutoriel qui pourrait m'éclaircir car là je suis perdu.

Hors ligne

 

#32 17-02-2012 10:36:44

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Utilisation ZfDataGrid

Non, mais de toutes façons là c'est ton algo qui est pas bon, donc il ne peux pas y avoir de tutoriel pour ce point...

Tu es d'accord que tu as des paramètres passés en url à ton action.

Quand tu les récupères, tu leur assigne une valeur par défaut si ils ne sont pas passés. Cette valeur est à 1 pour  sidx : $sidx=$this->_request->getParam("sidx",1);

Or, quelques lignes plus bas, tu utilises le paramètre order de ton fetchAll : $sidx $sord. Cette clause est de la form column ASC|DESC. On est d'accord ?

Si $sidx est égal à 1, on a 1 et sord n'a pas de valeur par défaut. Donc au lieu de column ASC|DESC on a seulement 1...

Il faut donc changer tes valeurs par défaut

Hors ligne

 

#33 17-02-2012 10:40:53

audrey
Membre
Date d'inscription: 14-02-2012
Messages: 23

Re: Utilisation ZfDataGrid

j'ai remplacé par ceci

Code:

[lang=php]
$this->_helper->layout->disableLayout();
        $page=$this->_request->getParam("page",1);
        $limit=$this->_request->getParam("rows",10);
        $sidx=$this->_request->getParam("sidx",'Num_Perimetre');
        $sord=$this->_request->getParam("sord",'ASC');
        $tabela = new Application_Model_DbTable_Perimetre();
        $perimetre = $tabela->fetchAll();

Plus d'erreur mais rien se s'affiche

Hors ligne

 

#34 17-02-2012 10:45:34

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Utilisation ZfDataGrid

Fait un Zend_Debug::dump($perimetre); exit; de sorte à voir si tu as des résultats dedans.

Tu peux aussi le tester sur responce après. Par contre enlève les bien une fois le test effectué.

Sinon, tu as quoi dans la vue associée ?

Hors ligne

 

#35 17-02-2012 10:52:16

audrey
Membre
Date d'inscription: 14-02-2012
Messages: 23

Re: Utilisation ZfDataGrid

$responce et $perimetre sont remplies avec mes valeurs


Dans mon controller :

Code:

[lang=php]
<?php

class PerimetreController extends Zend_Controller_Action
{ 
    public function indexAction() {
    }
 

    public function getDataAction() {
        $this->_helper->layout->disableLayout();
        $page=$this->_request->getParam("page",1);
        $limit=$this->_request->getParam("rows",10);
        $sidx=$this->_request->getParam("sidx",'Num_Perimetre');
        $sord=$this->_request->getParam("sord",'ASC');
        $tabela = new Application_Model_DbTable_Perimetre();
        $perimetre = $tabela->fetchAll();
     //echo Zend_Debug::dump($page);
     //echo Zend_Debug::dump($limit);
     //echo Zend_Debug::dump($sidx);
     //echo Zend_Debug::dump($sord);
     //echo Zend_Debug::dump($perimetre);
        $count = count( $perimetre );
 
        if( $count >0 ) {
            $total_pages = ceil($count/$limit);
        } else {
            $total_pages = 0;
        }
 
        if ($page > $total_pages)
            $page = $total_pages;
 
       $perimetre = $tabela->fetchAll(null, "$sidx $sord", $limit, ($page*$limit-$limit));
 
        $responce->page = $page;
        $responce->total = $total_pages;
        $responce->records = $count;
        $i=0;
 
        foreach($perimetre as $row) {
            $responce->rows[$i]['id']=$row->Num_Perimetre;
            $responce->rows[$i]['cell']=array(
                      $row->Num_Perimetre,
                    $row->Num_Paire,
                    $row->Assignation,
                    $row->Localisation,
            );
            $i++;
        }
       // echo Zend_Debug::dump($responce);
       $this->view->donnees = $responce;
       echo Zend_Debug::dump($this->view->donnees);
    }
}

Dans view/scripts/index.phtml

Code:

[lang=phtml]
<?php echo $this->jQuery(); 
echo $this->headLink()->prependStylesheet($this->baseUrl().'/css/ui-lightness/jquery-ui-1.8.17.custom.css');
?>
<table id="tbl-perimetre"></table>
<div id="pg-perimetre"></div>
 
<script type="text/javascript">
    $("#tbl-perimetre").jqGrid({
           url:'<?php echo $this->url(array('action'=>'get-data', 'format'=>'json')); ?>',
        datatype: "json",
        mtype: 'GET',
        colNames:['Num_Perimetre','Num_Paire','Assignation','Localisation','Zone_Unope','Region','Province_UP2011','Province','Cercle','Commune','Douar','DPA','Centre','Com_Historique','Com_Sondage','Data_Agri2010','Data_Org2010'],
        colModel:[
            {name:'Num_Perimetre',index:'Num_Perimetre', width:75, sorttype:"int", align:"center"},
            {name:'Num_Paire',index:'Num_Paire', width: 100, editable: true,align:"center"},
            {name:'Assignation',index:'Assignation', width: 100, align:"center", editable: true},
            {name:'Localisation',index:'Localisation', width: 100, editable: true,align:"center"},
        ],
        rowNum:10,
        rowList:[10,20,30],
        pager: '#pg-perimetre',
        sortname:"Num_Perimetre",
        viewrecords: true,
        sortorder: "ASC",
        caption:"Perimetre"
    });
 
    $("#tbl-perimetre").jqGrid('navGrid','#pg-perimetre',{edit:true,add:true,del:true,search:true});
</script>

et dans le view/scripts/get-data.phtml

Code:

[lang=phtml]

<?$this->json($this->donnees);?>

Dernière modification par audrey (17-02-2012 10:52:41)

Hors ligne

 

#36 17-02-2012 10:55:45

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Utilisation ZfDataGrid

Il faudrait mettre un echo devant l'aide de vue, car celle-ci renvoi une chaine, elle ne peut pas afficher les données par elle même !

Code:

[lang=phtml]<?php echo $this->json($this->donnees);?>

Prennez l'habitude d'utiliser correctement la balise PHP et de ne pas utiliser les short tags (<?php au lieu de <?), car certains hébergeurs (notamment mon serveur personnel) ont la directive short tags à off...

Hors ligne

 

#37 17-02-2012 10:57:17

audrey
Membre
Date d'inscription: 14-02-2012
Messages: 23

Re: Utilisation ZfDataGrid

Ah les données s'affiche merci pour le temps accordé.

Hors ligne

 

#38 17-02-2012 10:58:59

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Utilisation ZfDataGrid

Je te conseille de faire un résumé des différentes étapes utilisées, voir faire un tutoriel que tu pourrais poster ici pour les prochains !

Hors ligne

 

#39 17-02-2012 11:03:46

audrey
Membre
Date d'inscription: 14-02-2012
Messages: 23

Re: Utilisation ZfDataGrid

Il me reste plus qu'à faire fonctionner les boutons et c'est tout bon.

Hors ligne

 

#40 17-02-2012 11:20:17

audrey
Membre
Date d'inscription: 14-02-2012
Messages: 23

Re: Utilisation ZfDataGrid

Par contre mon tableau ne s'affiche pas correctement, les en-tete ne sont pas aligné avec mes colonne est-ce normal ?

Hors ligne

 

#41 17-02-2012 11:26:22

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Utilisation ZfDataGrid

Je n'ai jamais utilisé le plugin jquery que vous avez choisi, je n'en sais donc rien...

Sur les exemples du site, tout est bien aligné... Es-tu sur que ton tableau est bien formé (même nombre de colonnes et d'entêtes...) ?

As-tu la possibilité de mettre le site en ligne pour que je puisse le débugger facilement ?

Hors ligne

 

#42 17-02-2012 11:29:28

audrey
Membre
Date d'inscription: 14-02-2012
Messages: 23

Re: Utilisation ZfDataGrid

Non je travaille en local.

Hors ligne

 

#43 17-02-2012 11:32:31

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Utilisation ZfDataGrid

Après là ça reste du HTML/JS on ne peut plus classique, vous devriez être à même de vous débrouiller...

Juste pour info, vous bossez où là ? Vous êtes en stage ? Vous avez fait quoi comme études ?

Hors ligne

 

#44 17-02-2012 11:34:55

audrey
Membre
Date d'inscription: 14-02-2012
Messages: 23

Re: Utilisation ZfDataGrid

Je suis en apprentissage mais c'est la première fois que j'utilise un framework et du Jquery.

Hors ligne

 

#45 17-02-2012 11:37:34

tdutrion
Administrateur
Lieu: Dijon, Paris, Edinburgh
Date d'inscription: 23-12-2009
Messages: 614
Site web

Re: Utilisation ZfDataGrid

On apprends vite, là c'est le début donc c'est un peu violent, mais ça viendra progressivement smile

Hors ligne

 

#46 17-02-2012 11:38:03

audrey
Membre
Date d'inscription: 14-02-2012
Messages: 23

Re: Utilisation ZfDataGrid

j'espère bien.

Hors ligne

 

#47 17-02-2012 11:46:31

Orkin
Administrateur
Lieu: Paris
Date d'inscription: 09-12-2011
Messages: 1261

Re: Utilisation ZfDataGrid

Bonjour Audrey, je ne vais pas pouvoir t'aider sur la partie javascript par contre je suis surpris de voir l'url que tu remontes.

Pour te simplifier les choses pourquoi ne pas modifier ton fichier hosts pour y affecter un domain local du genre : monapplication.local

Et dans ta configuration apache ajouter un virtualhost sur le nom de domaine : monapplication.local et le faire directement pointer sur le dossier public de ton application.

Du coup dans ton navigateur, monapplication.local sera équivalent à 127.0.0.1/norc2/public/

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