Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > MVC
MVC Forum de support sur le développement d'applications de type modèle-vue-contrôleur avec Zend Framework ainsi que vos questions sur les plugins, les helpers etc. Avant de poster -> Cours MVC, FAQ ZF Controller
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/03/2008, 11h42   #1
Membre du Club
 
Inscription : février 2008
Messages : 117
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 117
Points : 40
Points : 40
Par défaut Créer un tableau avec Zend

Bonjour,
Je veux créer une petite application avec Zend.
Avant, lorsque j'ai travaillé sans framework, en utilisant HTML et php, je divise ma page en tableaux pour bien la mettre en forme.
Mais, je me trouve bloquer en utilisant Zend, je n'arrive pas à créer un tableau, et mettre dedans un 'text', 'radio', 'checkbox',...comme le suivant:
Code :
1
2
3
4
5
6
7
8
<body>
<table>
	<tr>
		<td>Nom: <input type="text" value="txt_name" /></td>
		<td><input type="submit" /></td>
	</tr>
</table>
</body>
Comment je peux alors faire ça avec Zend?
Merci d'avance.
salmoucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 12h51   #2
Membre habitué
 
Inscription : juin 2004
Messages : 296
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : juin 2004
Messages : 296
Points : 147
Points : 147
Zend_form ?
http://framework.zend.com/manual/fr/zend.form.html
__________________
- Blog
- stages-aikido.fr
kaboume est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 13h10   #3
Membre Expert
 
Avatar de nicolas.sitbon
 
Inscription : août 2007
Messages : 2 024
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2007
Messages : 2 024
Points : 2 117
Points : 2 117
Citation:
Envoyé par salmoucha Voir le message
Avant, lorsque j'ai travaillé sans framework, en utilisant HTML et php, je divise ma page en tableaux pour bien la mettre en forme.
C'est bien tu essayes de suivre des bonnes pratiques de programmation coté serveur en utilisant ZF, mais apparamment tu fais tout le contraire coté client.

A mon sens, c'est une aberration de générer des balises html depuis php, ça n'est pas son but. Dans MVC, tu as V pour View, c'est la que doit être ton code html avec le moins de code php possible.

De plus, autant la séparation des couches en php n'est pas obligatoire, autant coté client, tu dois clairement séparer tes 3 couches, typiquement tu dois avoir un fichier html, un fichier css et un fichier js
ex :
index.html
index.css
index.js

Ensuite, on ne fait plus de mise en page en tableau depuis xhtml donc 2000, alors fait toi une raison tout de suite et si tu cherches le pourquoi du comment, je te renvois vers des sites comme developpez.com openweb qui t'expliqueront mieux que moi en quoi la mise en page en tableau est néfaste et obsolète.

En conclusion, je dirais qu'on ne peut être un bon développeur php si on n'est pas un bon développeur coté client.

Cordialement.
nicolas.sitbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 14h18   #4
Membre du Club
 
Inscription : février 2008
Messages : 117
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 117
Points : 40
Points : 40
Merci bcp pour vos aides.
Mais, si je t'ai bien compris nicolas, est ce que je dois créer mes pages Modèles et Contrôles puis l'affichage se fait avec View tout simplement?

D'accord, prenons un exemple:
J'ai une base de données contenant une table "facture". Je veux créer un tableau contenant tous les détailles d'une facture en choisissant son identifiant à partir d'une liste découlante.

Alors, ma requête de sélection je l'écrit dans le Modèle et le tableau je le crée par des balises HTML dans la View? si oui, c'est quoi le rôle du Contrôle ici?

Merci bcpppp
salmoucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 14h40   #5
Membre Expert
 
Avatar de nicolas.sitbon
 
Inscription : août 2007
Messages : 2 024
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2007
Messages : 2 024
Points : 2 117
Points : 2 117
Non c'est le controleur qui réalise les actions, dans ton cas la sélection d'un facture à partir du modèle ( ta base de données représentée par un classe dans le répertoire "model") et l'affichage se fait dans le vue :

models/Facture.php :
Code :
1
2
3
4
5
<?php
class Facture extends Zend_Db_Table
{
    protected $_name = 'facture';
}
controllers/IndexController.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class IndexController extends Zend_Controller_Action
{
    function init()
    {
        // chargement de la configuration : paramètres de base de données plus chemin des fichiers
        $dbConfig 	= new Zend_Config_Ini('./application/config.ini', 'database');
        $path 		= new Zend_Config_Ini('./application/config.ini', 'path');
 
        // connexion bdd
        $this->db = Zend_Db::factory($dbConfig->db);
        Zend_Db_Table::setDefaultAdapter($this->db);
    }
 
    function indexAction()
    {
        /* ici tu interroge ta bdd et tu récupères les champs qui t'intéresse que tu stockes dans des variables par exemple $facture_id et $client_name*/
        $this->view->facture_id = $facture_id;
        $this->view->client_name = $client_name;
    }
}
views/scripts/index/index.phtml :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
    <title>ZF</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
    <table>
        <tr>
            <th>numero de facture</th>
            <th>nom du client</th>
        </tr>
        <tr>
            <td><?php echo $this->facture_id ?></td>
            <td><?php echo $this->client_name ?></td>
        </tr>
    </table>
</body>
</html>
nicolas.sitbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 15h22   #6
Membre du Club
 
Inscription : février 2008
Messages : 117
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 117
Points : 40
Points : 40
Merci infiniment nicolas.
Mais excuse moi, voici mon architecture de l'application:

app_mvc_zend
/Application
//config.ini
//models
///Facture.php
//views
///scripts
////index
/////index.phtml
//controllers
///IndexController.php
//index.php

1) Est ce qu'il manque quelque chose? car il ne fonctionne pas!!!
2)Est ce que je dois toujours créer une page "index.php", à quoi ça serre et qu'est ce qu'il doit contenir?

Merci
salmoucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 15h39   #7
Membre Expert
 
Avatar de nicolas.sitbon
 
Inscription : août 2007
Messages : 2 024
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2007
Messages : 2 024
Points : 2 117
Points : 2 117
Citation:
Envoyé par salmoucha Voir le message
voici mon architecture de l'application:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
app_mvc_zend
    /Application
        config.ini
        /models
            Facture.php
        /views
            /scripts
                 /index
                      index.phtml
       /controllers
            IndexController.php
       index.php
1) Est ce qu'il manque quelque chose? car il ne fonctionne pas!!!
il n'y a pas une façon de faire, mais la tienne n'est pas optimale du tout.
voir ici http://framework.zend.com/wiki/displ...rectory+Layout
pour plus de détails.
Citation:
Envoyé par salmoucha Voir le message
2)Est ce que je dois toujours créer une page "index.php", à quoi ça serre et qu'est ce qu'il doit contenir?
Pas forcément de ce nom là mais c'est plus simple, c'est ce qu'on appelle le bootstrap ou point d'entré de ton application web, typiquement il contient au minimum quelque chose comme ça :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
error_reporting(E_ALL|E_STRICT);// affiche toutes les erreurs
date_default_timezone_set('Europe/Paris');// choix du fuseau horaire
set_include_path(	'.'						. PATH_SEPARATOR .
					'./library'				. PATH_SEPARATOR .
					'./application/models/'	. PATH_SEPARATOR .
					get_include_path() );//ajout de dossier à l'INCLUDE_PATH
 
// autochargement de classe : plus besoin d'include()
include "Zend/Loader.php";
Zend_Loader::registerAutoload();
 
// démarrage des sessions
Zend_Session::start();
 
Zend_Controller_Front::getInstance()->throwExceptions(true);
Zend_Controller_Front::run('./application/controllers');
nicolas.sitbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 16h00   #8
Membre du Club
 
Inscription : février 2008
Messages : 117
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 117
Points : 40
Points : 40
Toujours, il n'affiche rien!!!
Je pense qu'il n'a pas fait la connexion à la base de données.
Est ce que la connexion à la base dans ce cas se fait à travers le fichier config.ini? ou c'est une table normale sur phpmyadmin?
salmoucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2008, 16h07   #9
Membre Expert
 
Avatar de nicolas.sitbon
 
Inscription : août 2007
Messages : 2 024
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2007
Messages : 2 024
Points : 2 117
Points : 2 117
Disons que dans mon cas, je récupère les identifiants de connexion à ma base de données dans un un fichier ini
ex : config.ini
Code :
1
2
3
4
5
6
[database]
db.adapter = PDO_MYSQL
db.params.host = localhost
db.params.username = root
db.params.password =
db.params.dbname = forum
nicolas.sitbon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2009, 00h10   #10
Membre régulier
 
Avatar de FrontLine
 
Nicolas
Webmaster
Inscription : janvier 2008
Messages : 172
Détails du profil
Informations personnelles :
Nom : Nicolas
Âge : 30

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : janvier 2008
Messages : 172
Points : 84
Points : 84
Bonsoir,

je suis tombé sur ce topic en cherchant à en connaître un peu plus sur Zend et en voyant le code de nicolas :

Code :
1
2
3
4
5
6
function indexAction()
    {
        /* ici tu interroge ta bdd et tu récupères les champs qui t'intéresse que tu stockes dans des variables par exemple $facture_id et $client_name*/
        $this->view->facture_id = $facture_id;
        $this->view->client_name = $client_name;
    }
Je me demande où est ce que les variables $facture_id et $client_name ont été déclarées ? Dans un classe parente ?

Je me demandais aussi si on été obligé de passer les params de config via un fichier.ini ?
FrontLine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2009, 09h51   #11
Membre du Club
 
Inscription : février 2008
Messages : 117
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 117
Points : 40
Points : 40
Ce code est écrit dans le controleur qui fait la liaison entre le modèle et la vue.
Code :
$this->view->facture_id = $facture_id;
pour la 1ere partie: $this->view->facture_id, facture_id est une variable envoyée du contrôleur à la vue
pour la 2ere partie: $facture_id, c'est soit une variable qui se trouve dans le modèle soit un champs "facture_id" qui se trouve dans ta BD.
salmoucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2009, 10h01   #12
Membre du Club
 
Inscription : février 2008
Messages : 117
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 117
Points : 40
Points : 40
les paramètres de configuration, tu peux les mettre dans un fichier .ini soit dans un fichier XML
salmoucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2009, 03h51   #13
Membre régulier
 
Avatar de FrontLine
 
Nicolas
Webmaster
Inscription : janvier 2008
Messages : 172
Détails du profil
Informations personnelles :
Nom : Nicolas
Âge : 30

Informations professionnelles :
Activité : Webmaster

Informations forums :
Inscription : janvier 2008
Messages : 172
Points : 84
Points : 84
A ok, merci d'avoir pris le temps de me répondre.
FrontLine est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h28.


 
 
 
 
Partenaires

Hébergement Web