Hello, hello,
Sensibiliser aux frameworks, je souhaite maintenant m'y mettre, comme on dit.
J'ai installé Zend etc etc ..., j'ai lu des tutos et j'ai réussi à exécuter des exemples.
Maintenant, je souhaite faire mon exemple et là, cela se complique.
Pour l'instant, je souhaite afficher une liste. En soi, rien de difficile et je l'aurai déjà fait en "normal" en 3 minutes.
Mais maintenant, il y a le modèle MVC et Zend.
Voici ce que je souhaite faire concrétement :
1 * afficher un choix sur ma page d'accueil
2 * lors d'un clic sur un choix, afficher la liste d'une table.
Rien de bien compliqué
Voici ce que j'ai fait :
* Répertoire \www\tutoriel-zf\application\views\scripts\index :
modification du fichier index.phtml avec ajout du lien :
* Répertoire \www\tutoriel-zf\application\controllers:<a href="<?php echo $this->url(array('controller'=>'index',
'action'=>'lettrea', 'id'=>'a'));?>">A</a>
modification du fichier indexController.php avec ajout de l'action "lettrea"
* Répertoire \www\tutoriel-zf\application\models :function lettreaAction()
{
$this->view->title = "Liste des fiches de la lettre choisie :";
$lettre = new Lettrea();
//$result = $offre->recherche();
$data = $lettre->fetchAll();
foreach($this->datas as $data)
{
echo $this->escape($data->title);
}
/*
$form = new FormulaireAlbum();
$form->submit->setLabel('Enregistrer');
$this->view->form = $form;
if ($this->_request->isPost()) {
$formData = $this->_request->getPost();
if ($form->isValid($formData)) {
$albums = new Albums();
$id = (int)$form->getValue('id');
$row = $albums->fetchRow('id='.$id);
$row->artist = $form->getValue('artist');
$row->title = $form->getValue('title');
$row->save();
$this->_redirect('/');
} else {
$form->populate($formData);
}
} else {
// L'id de l'album est attendu dans $params['id']
$id = (int)$this->_request->getParam('id', 0);
if ($id > 0) {
$albums = new Albums();
$album = $albums->fetchRow('id='.$id);
$form->populate($album->toArray());
}
}
*/
}
création du fichier Lettrea.php avec comme contenu :
Dans le code, il y a différentes traces, différents cas.<?php
class Lettrea extends Zend_Db_Table
{
// protected $primary = "user_id";
public function __construct()
{
/*
$db = Zend_Registry::get("dbAdapter");
$select = $db->select();
$select->from('albums', array('artist', 'title'));
// $select->where('offre_contrat= ?', $offre_contrat);
// $select->where('offre_activite= ?', $offre_activite);
// $select->where('offre_dep= ?', $offre_dep);
// et ensuite on exécute la requête SQL
$result = $this -> fetchAll($select);
*/
$db = Zend_Registry::get("dbAdapter");
// On prépare ici la requête SQL et on ne l'exécute pas
$select = $this -> select() -> from('albums',array('artist','title'));
// -> where('user_id = ? ',$userId)
// -> where('actif = 1');
/*
Comme vous pouvez le voir, on chaine les appels avec PHP et donc on creer
notre requête SQL à partir des méthode de la classe.
Correspondance SQL :
SELECT id, lastname, firstname FROM users WHERE user_id = ? AND actif = 1
*/
// et ensuite on exécute la requête SQL
$result = $this -> fetchRow($select);
}
}
Pour l'instant, j'obtiens ceci :
Qui peut m'aiderFatal error: Uncaught exception 'Zend_Exception' with message 'No entry is registered for key 'dbAdapter'' in C:\wamp\www\tutoriel-zf\library\Zend\Registry.php:145 Stack trace: #0 C:\wamp\www\tutoriel-zf\application\models\Lettrea.php(23): Zend_Registry::get('dbAdapter') #1 C:\wamp\www\tutoriel-zf\application\controllers\IndexController.php(131): Lettrea->__construct() #2 C:\wamp\www\tutoriel-zf\library\Zend\Controller\Action.php(502): IndexController->lettreaAction() #3 C:\wamp\www\tutoriel-zf\library\Zend\Controller\Dispatcher\Standard.php(293): Zend_Controller_Action->dispatch('lettreaAction') #4 C:\wamp\www\tutoriel-zf\library\Zend\Controller\Front.php(946): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #5 C:\wamp\www\tutoriel-zf\index.php(32): Zend_Controller_Front->dispatch() #6 {main} thrown in C:\wamp\www\tutoriel-zf\library\Zend\Registry.php on line 145
Partager