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 30Priere 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