Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je suis débutante en zend Framwork, le message d'erreur qui me sort est le suivant :
- Warning: Invalid argument supplied for foreach() in C:\wamp\www\ZF\application\views\scripts\index\index.phtml on line 17
Ma page index est comme suit :
// activer le reporting des erreurs error_reporting(E_ALL|E_STRICT); ini_set('display_errors', 'on'); //ini_set('display_errors', 1); // localisation de la date date_default_timezone_set('Europe/Paris'); // modifie le chemin d'inclusion pour inclure le chemin de library // mise en place des répertoires et chargement des classes set_include_path('.' . PATH_SEPARATOR . './library' . PATH_SEPARATOR . './application/models/' . PATH_SEPARATOR . get_include_path()); // inclure une classe spécialisée dans l'inclusion de classe du framework include "Zend/Loader.php"; // hada li kane dayr lia l erreur Zend_Loader::registerAutoload(); // chargement de la classe Front du dossier library/Zend/Controller/ Zend_Loader::loadClass('Zend_Controller_Front'); // Chargement automatique de Zend_Db_Adapter_Pdo_Mysql, et instanciation. Zend_Loader::loadClass('Zend_Db_Table_Row_Abstract'); Zend_Loader::loadClass("Zend_Config_Ini"); $config = new Zend_Config_Ini('./application/config.ini', 'general'); echo $config->db->username . '-' . $config->db->hostname; //echo $config->dbname ; $db = Zend_Db::factory($config->db->adapter,array( 'host' => $config->db->host, 'username' => $config->db->username, 'password' => $config->db->password, 'dbname' => $config->db->dbname, ) ); // placons la connexion dans un registre global à l'application Zend_Loader::loadClass('Zend_Registry'); $registry = Zend_Registry::getInstance(); $registry->set('db', $db); // obtenir une instance du contrôleur -1- $frontController = Zend_Controller_Front::getInstance(); // la configurer -3- $frontController->setControllerDirectory('./application/controllers'); // en phase de developpement, le client voit le retour des erreurs -2- // (cette information devrait être placée dans un fichier de configuration) $frontController->throwExceptions(true); //Zend_Layout::startMvc(array('layoutPath'=>'./application/layouts')); // run! $frontController->dispatch();
La page config.ini
[general] db.adapter = PDO_MYSQL db.params.host = localhost db.params.username = root db.params.password = db.params.dbname = zftest
la page index.phtml qui se trouve dans le chemin ZF\application\views\scripts\index\index.phtml on line 17 le code est comme suit :
<html> <head> <title><?php echo $this->escape($this->title); ?></title> </head> <body> <h1><?php echo $this->escape($this->title); ?></h1> <p><a href="<?php echo $this->url(array('controller'=>'index', 'action'=>'ajouter')); ?>">Ajouter un nouvel album</a> </p> <table> <tr> <th>Title</th> <th>Artist</th> <th> </th> </tr> <?php foreach($this->albums as $album) : ?> <tr> <td><?php echo $this->escape($album->title);?></td> <td><?php echo $this->escape($album->artist);?></td> <td> <a href="<?php echo $this->url(array('controller'=>'index', 'action'=>'modifier', 'id'=>$album->id));?>">Modifier</a> <a href="<?php echo $this->url(array('controller'=>'index', 'action'=>'supprimer', 'id'=>$album->id));?>">Spprimer</a> </td> </tr> <?php endforeach; ?> </table> </body> </html>
Merci de m'indiquer ou j'ai commis l'erreur.
et merci d'avance.
Dernière modification par Bouchra (08-12-2011 02:16:48)
Hors ligne
L'erreur ce trouve dans ton IndexController, il ne transmet pas à ta vue un array ou une variable itérable, donc lors du foreach il y'a erreur.
Hors ligne
Merci pour votre reponse shadypiere.
Mon idexcontroler est comme suit ;
require_once '../models/Albums.php'; class IndexController extends Zend_Controller_Action { function indexAction() { $this->view->title = "Mes albums"; $album = new Albums(); $this->view->albums = $album->fetchAll()->toArray(); } }
Dernière modification par Bouchra (08-12-2011 16:24:02)
Hors ligne
Le plus simple serait de voir le contenu de la rubrique albums dans la page index.phtml avec le code suivant par exemple:
[lang=php] <pre> <?php print_r($this->albums) ?> </pre>
Hors ligne
Ci-dessous la page index.phtml :
<html> <head> <title><?php echo $this->escape($this->title); ?></title> </head> <body> <h1><?php echo $this->escape($this->title); ?></h1> <p><a href="<?php echo $this->url(array('controller'=>'index', 'action'=>'ajouter')); ?>">Ajouter un nouvel album</a> </p> <table> <tr> <th>Title</th> <th>Artist</th> <th> </th> </tr> <?php foreach($this->albums as $album) : ?> <tr> <td><?php echo $this->escape($album->title);?></td> <td><?php echo $this->escape($album->artist);?></td> <td> <a href="<?php echo $this->url(array('controller'=>'index', 'action'=>'modifier', 'id'=>$album->id));?>">Modifier</a> <a href="<?php echo $this->url(array('controller'=>'index', 'action'=>'supprimer', 'id'=>$album->id));?>">Spprimer</a> </td> </tr> <?php endforeach; ?> </table> </body> </html>
Malheureusement l'erreur persiste toujours.
Fatal error: Class 'Zend_Db_Table' not found in C:\wamp\www\ZF\index.php on line 30
Un bout de code de la page index.php
// ------------------------------- Mise en place de la BDD Zend_Loader::loadClass('Zend_Db'); $db = Zend_Db::factory($config->db); Zend_Db_Table::setDefaultAdapter($db); -------- c'est la ligne 30
Priere me debloquer.
Dernière modification par Bouchra (08-12-2011 19:13:49)
Hors ligne
Pas de réponse. Je zappes ce tuto et m'en conseillé de m'autoformer a travers du QuickStart.
Hors ligne
Pages: 1