Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-12-2011 23:50:49

Bouchra
Membre
Lieu: Montréal
Date d'inscription: 07-12-2011
Messages: 47

Warning: Invalid argument supplied for foreach()

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 :

Code:

// 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

Code:

[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 :

Code:

<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>&nbsp;</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

 

#2 08-12-2011 08:27:12

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

Re: Warning: Invalid argument supplied for foreach()

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

 

#3 08-12-2011 15:52:22

Bouchra
Membre
Lieu: Montréal
Date d'inscription: 07-12-2011
Messages: 47

Re: Warning: Invalid argument supplied for foreach()

Merci pour votre reponse shadypiere.

Mon idexcontroler est comme suit ;

Code:

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

 

#4 08-12-2011 18:01:05

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: Warning: Invalid argument supplied for foreach()

Le plus simple serait de voir le contenu de la rubrique albums dans la page index.phtml avec le code suivant par exemple:

Code:

[lang=php]
<pre>
  <?php print_r($this->albums) ?>
</pre>

Hors ligne

 

#5 08-12-2011 19:09:41

Bouchra
Membre
Lieu: Montréal
Date d'inscription: 07-12-2011
Messages: 47

Re: Warning: Invalid argument supplied for foreach()

Ci-dessous la page index.phtml :

Code:

<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>&nbsp;</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

Code:

// ------------------------------- 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

 

#6 10-12-2011 04:29:47

Bouchra
Membre
Lieu: Montréal
Date d'inscription: 07-12-2011
Messages: 47

Re: Warning: Invalid argument supplied for foreach()

Pas de réponse. Je zappes ce tuto et m'en conseillé de m'autoformer a travers du QuickStart.

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