Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 15-03-2012 15:05:18

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

[ZF 1.11.9] ZFDataGrid

Bonjour à tous,
j'aurai voulu utiliser ZF dataGrid :
http://zfdatagrid.com/

Petite démo ici meme :
http://zfdatagrid.com/grid/

Je télécharge la totale, j'y mets la BDD, je mets mes mots de passe dans le config et je ne vois rein d'autre à parametrer.

Et je tombe sur une erreur dans la librairie!

( ! ) Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (Sample%20Project)' in C:\wamp\www\Sample Project\library\Zend\Controller\Dispatcher\Standard.php on line 248

Quelqu'un a t il déja mis en place ZF DataGrid ?
Si oui comment ? big_smile

Ou auriez vous une autre librairie à me conseiller ?

Hors ligne

 

#2 16-03-2012 13:20:54

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: [ZF 1.11.9] ZFDataGrid

J'ai mis ZFDatagrid en place, et je l’exploite de façon plutôt poussé. Mais je ne comprend pas ce que tu veux paramétré hmm
Tu télécharge la librairie tu dezippe, tu prend le dossier Bvb_ qui est dans library et tu la met dans ton dossier library, tu ajoute le namespace a ton application puis... enfin c'est la dans la documentation smile

ps : évite les espaces dans les chemins contenant tes applications parfois ça fout la merde.

Hors ligne

 

#3 19-03-2012 11:17:59

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: [ZF 1.11.9] ZFDataGrid

OK merci Shaddypierre
je me lance dans la doc.

C'est vrai qu'en général , j'aime bien avoir une version qui marche en local pour s'y référer en cas de soucis et etre sur que cela peut fonctionner big_smile

Mais si tu l'as fait fonctionner, c'est que c'est possible ( pas une librairie bidon)

Merci

Hors ligne

 

#4 19-03-2012 11:28:12

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

Re: [ZF 1.11.9] ZFDataGrid

manuzed78 a écrit:

Et je tombe sur une erreur dans la librairie!

( ! ) Fatal error: Uncaught exception 'Zend_Controller_Dispatcher_Exception' with message 'Invalid controller specified (Sample%20Project)' in C:\wamp\www\Sample Project\library\Zend\Controller\Dispatcher\Standard.php on line 248

Quelle url appelles-tu pour avoir cette page ? Tu appelles localhost/Sample Project/public ?

Si oui, configures plutôt un virtualhost, ou paramètres ton .htaccess correctement.

Hors ligne

 

#5 19-03-2012 11:36:43

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: [ZF 1.11.9] ZFDataGrid

Théocrite a écrit:

paramètres ton .htaccess correctement.

Ha oui ?
que dois je lui dire exactement ?

Hors ligne

 

#6 19-03-2012 11:54:00

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

Re: [ZF 1.11.9] ZFDataGrid

Tu peux t'inspirer de ce que propose Rob Allen sur son blog (traduction française sur mon blog) : Zend Framework sur hébergement mutualisé.

Si tu choisis cette solution, tu devrais vraiment supprimer l'espace dans ton nom de répertoire, sinon tu auras toujours des soucis...

La solution du virtualhost, telle qu'elle est indiquée dans le tutoriel de Rob Allen débuter avec Zend Framework, est cependant bien plus propre... Après il faut aussi voir à quoi ressemblera l'hébergement pour la production.

Hors ligne

 

#7 26-04-2012 16:21:14

manuzed78
Membre
Date d'inscription: 13-12-2009
Messages: 86
Site web

Re: [ZF 1.11.9] ZFDataGrid

Hello à tous
j'ai repris le tout à zéro avec une base simplissime pour faire fonctionner ZFDataGrid.
Je suis reparti sur une simple liste d'albums ( pour ceux qui connaissent l'intro à Zend 1.10 sur developper.com)

Dans mon controller index j'ai donc :

Code:

/* AutoCompletion */
function AddAutoCompleteToFields( Bvb_Grid_Event $event )
{
    $subject = $event->getSubject();
    $script = "$(document).ready( function() {";
    foreach ( $subject->getVisibleFields() as $name ) {
        $script .= "$(\"input#filter_$name\").autocomplete({focus: function( event, ui ) "
                        . "{document.getElementById( 'filter_$name' ).value = ui.item.value },"
                        . " source: '{$subject->getAutoCompleteUrlForFilter( $name )} '});\n";
    }
    
    $script .= "});";
    
    $subject->getView()->headScript()->appendScript( $script );
}

class IndexController extends Zend_Controller_Action
{
    private $_db;
    

   public function init()
   {
      /* Initialize action controller here */
        Zend_Dojo::enableView($this->view);
        // $this->view->url = Zend_Registry::get('config')->site->url;
        // $this->view->action = $this->getRequest()->getActionName();
        // header( 'Content-Type: text/html; charset=ISO-8859-1' );
        // $this->_db = Zend_Registry::get('db');
        // Bvb_Grid_Deploy_Ofc::$url = Zend_Registry::get('config')->site->url;
    }

   public function indexAction()
   {
      // action body
        $baseUrl = Zend_Controller_Front::getInstance()->getBaseUrl();
          
        $albums = new Application_Model_DbTable_Albums();
        //$this->view->albums = $albums->fetchAll();
        $grid = Bvb_Grid::factory( 'Table' );
        $grid->setImagesUrl( $baseUrl . '/images/' );
         
        Bvb_Grid::useModRewrite( true );
        //$source = new Bvb_Grid_Source_Zend_Table( $albums );
        //$grid->setSource( $source );
        //$grid->setRecordsPerPage(5);
        $select = $albums->select()->from( 'albums', array( 'id', 'artiste', 'titre' ) )->order( 'id ASC' );
        $grid->query( $select );
        
        $grid->setPaginationInterval( array( 
                                                        10 => 10,
                                                        20 => 20,
                                                        50 => 50,
                                                        100 => 100 ) );
                                                        
        $grid->setUseKeyEventsOnFilters(true);
        $grid->listenEvent('grid.init_deploy', 'AddAutoCompleteToFields' );
        $myGrid = $grid->deploy();
        $this->view->grid = $myGrid;

   }

Le layout est assez simple :

Code:

<?php 
    $this->headMeta()->appendHttpEquiv( 'ContentType', 'text/html;charset=utf-8' );
    $this->headTitle()->setSeparator( ' - ' );
    $this->headTitle( 'Exemple ZFDatagrid' );
    $baseUrl=Zend_Controller_Front::getInstance()->getBaseUrl();
    echo $this->doctype();
?>

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <link href="<?php echo $baseUrl.'/js/jquery-ui-1.8.16.custom/css/cupertino/jquery-ui-1.8.16.custom.css'; ?>" rel="stylesheet" type="text/css" />;
        <script src="<?php echo $baseUrl.'/js/jquery-ui-1.8.16.custom/js/jquery-1.3.2.js'; ?>"></script>
        <script src="<?php echo $baseUrl.'/js/jquery-ui-1.8.16.custom/js/jquery-ui-1.8.16.custom.min.js'; ?>"></script>
        <?php
            if ( $this->dojo()->isEnabled() ) {
                $this->dojo()->addStylesheetModule( 'dijit.themes.nihilo' );
                echo $this->dojo();
            }
         echo $this->headMeta(); 
         echo $this->headTitle(); 
         echo $this->headLink()->prependStylesheet( $this->baseUrl() . '/css/site.css' );
         echo $this->headScript();?>
    </head>
    <body>
        <div id="content">
            <h1><?php echo $this->escape( $this->title ); ?></h1>
            <?php echo $this->layout()->content; ?>
        </div>
    </body>
</html>

Dans la vue index.phtml :

Code:

<?php
    echo $this->jQuery();
    $this->title = 'Mes Albums';
    $this->headTitle( $this->title );
?>

<p><a href="<?php echo $this->url( array( 'controller' => 'index', 'action' => 'ajouter' )); ?>">Ajouter de nouveaux albums</a></p>
<?php
    echo $this->grid; 
?>

Reste le bootstrap ( le plus simple que j'ai pu faire )

Code:

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initRequest()  // initialise la requete pour ZendX
    {
    $request = new Zend_Controller_Request_Http();
    Zend_Controller_Front::getInstance()->setRequest( $request );
    }
    
    protected function _initResponse()
    {
        $response = new Zend_Controller_Response_Http();
        $response->setRawHeader( 'Content-type: text/html; charset=utf-8' );
        //$response->setHeader( 'Content-type',' text/html; charset=utf-8' );
        Zend_Controller_Front::getInstance()->setResponse( $response );
    }
    
    //////////////////////////////////////////  ZendX_JQuery //////////////////////////////////////////
    protected function _initView() {
        $view = new Zend_View();
        $view->addHelperPath("ZendX/JQuery/View/Helper", "ZendX_JQuery_View_Helper");
        $baseUrl=Zend_Controller_Front::getInstance()->getBaseUrl();
        $view->jQuery()->addStylesheet($baseUrl.'/js/jquery-ui-1.8.16.custom/css/cupertino/jquery-ui-1.8.16.custom.css');
        $view->jQuery()->addJavascriptFile($baseUrl.'/js/jquery-ui-1.8.16.custom/js/jquery-1.6.2.min.js');
        $view->jQuery()->addJavascriptFile($baseUrl.'/js/jquery-ui-1.8.16.custom/js/jquery-ui-1.8.16.custom.min.js');
        $rendermode = ZendX_JQuery::RENDER_SOURCES
                        | ZendX_JQuery::RENDER_JQUERY_ON_LOAD
                        | ZendX_JQuery::RENDER_STYLESHEETS;
        $view->jQuery()->setRenderMode($rendermode);
        
        Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer')->setView($view);
    
    }
}

Je vois bien la liste des items de ma base et tout fonctionne big_smile  SAUF la recherche dynamique en AJAX :
quand on tape une lettre dans le champ, il doit raffraichir la liste en filtrant les items en fonction du choix utilisateur.

Chez moi cela le fait uniquement si je click en plein milieu de la page comme s'il y avait un évenement JS onfocusout ou équivalent...
Sauf que je ne trouve rien pour régler ça...

Quelqu'un aurait une idée pour faire avancer le schmilblick?

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