Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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 ?
Ou auriez vous une autre librairie à me conseiller ?
Hors ligne
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é
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
ps : évite les espaces dans les chemins contenant tes applications parfois ça fout la merde.
Hors ligne
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
Mais si tu l'as fait fonctionner, c'est que c'est possible ( pas une librairie bidon)
Merci
Hors ligne
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
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
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 :
/* 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 :
<?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 :
<?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 )
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 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
Pages: 1