Le 11/01/2004 à 18H33, John GALLET a écrit :
...
>> Mais j'aimerai bien que lorsque le formulaire est valide, on aille
sur
>> une autre page.
> Non, tu aimerais que soit affichée une autre information. C'est ça ton
> besoin.
Heu, oui, mais dans ma conception (voir suite), une information est
rattachée a une page (serait-ce l'erreur ?).
>> 1- Quelle est la méthode généralement utilisée pour les formulaires
(
>> ie: <form action=" ??? "> ) ?
> Généralement, j'en sais rien. Celle que j'utilise est la suivante :
> - filtrer les variables en entrée.
> - vérifier la cohérence (variables obligatoires présentes, etc..)
> Si une incohérence détecteé :
Jusque la, tout va bien.
> require('print_form.php'); exit();
Ha, bah la, non, rien ne va plus.
> Dans ce print_form, la target est le script courant qui gère la réception
> du formulaire. Ce print_form ne fait que séparer l'affichage de la
> logique.
> Sinon (tout va bien), il suffit d'exécuter el code que je veux. Si je veux
> exécuter toto.php, je n'ai pas besoni de faire stupidement un aller retour
> pour rien, il suffit de faire require('toto.php'); exit().
Bon, j'ai besoin d'un petit coup de main pour vérifier ma conception :
seriez vous en train de la remettre en question ?
En fait, je me suis fait quelques classes permettant de faciliter le
developpement.
Une classe de base Layout, rattachée a un template.
class Layout
{
var $template = '';
function Afficher()
{
include('fond.tpl.php');
# fond.tpl.php fait un appel a $this->PrintContenu()
}
function PrintContenu()
{
include($this->template);
}
...
}
J'ai aussi une class RequestManager qui permet de faciliter la gestion
des données fournie a la page.
class RequestManager
{
var $messages = array();
var $erreurs = array();
# $actions est un tableau dont la clef correspond a un nom
# de variable, et la valeur correspond a une methode de la
# classe derivee.
var $actions = array();
...
}
Je me suis donc aussi fait une classe LayoutRequest :
class LayoutRequest extends Layout
{
var $manager = NULL;
var $managerName = '';
function PrintMessages()
{
print $this->manager->messages();
}
...
}
En gros, dans chaque page, j'ai juste a faire de l'héritage :
class SoireeManager extends RequestManager
{
# dans creer_soiree.tpl.php, j'ai un bouton submit :
# <input type="submit" name="creer" value="Créer"/>
var $actions = array( 'creer' => 'CreerSoiree' );
function CreerSoiree()
{
# Ici, on valide le formulaire, on met a jour les variables
# $this->erreurs et $this->messages
}
}
class LayoutGestionSoiree extends LayoutRequest
{
var $template = 'creer_soiree.tpl.php';
var $managerName = 'SoireeManager';
# On ajoute les fonctions spécifiques reclamées par 'var $template'
# ex : PrintTypeSoiree(){ ... }
}
et le script de chaque page est simple :
$layout = new LayoutGestionSoiree;
$layout->Afficher();
Dans ces conditions, j'ai du mal a voir comment gerer le contenu a
afficher en fonction de la validité du formulaire. Il faudrait
supprimer $layout, et l'affecter a une nouvelle classe, associée au
bon template de contenu que je souhaite voir afficher.
Faut il que je reparte a zero ? (heu, la, ca va etre lourd !)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
John GALLET
Re,
Non, tu aimerais que soit affichée une autre information. C'est ça ton besoin. Heu, oui, mais dans ma conception (voir suite), une information est
rattachée a une page (serait-ce l'erreur ?). Ca me parait en effet très réducteur comme vision, mais on doit bien
pouvoir s'en affranchir.
require('print_form.php'); exit(); Ha, bah la, non, rien ne va plus.
Mais si. Tout votre code avec les layout et le tutti quanti possède bien
un point d'entrée (quand on instancie les objets "kivonbien"). Si ce point d'entrée est dans entree.php, il suffit de faire require('entree.php'); exit(); à la place de header("Location:entree.php?chiée_de_paramètres=TRUE");
Rien de plus.
Bon, j'ai besoin d'un petit coup de main pour vérifier ma conception : seriez vous en train de la remettre en question ? A priori non. Seulement son appel.
En fait, je me suis fait quelques classes permettant de faciliter le developpement. Admettons. Quand je vois les noeuds au cerveau que ça vous cause, j'émets
uin doute sur la partie "faciliter", mais admettons ;-)
function PrintContenu() { include($this->template); } En gros y'a qu'elle qui bosse, tout le reste c'est du temps perdu et des
couches empilées pour rien. Au passage, n'utilisez plus include mais require(), ou alors testez le retour de l'appel à include (cf la FAQ du forum pour la différence entre les deux, http://faqfclphp.free.fr/).
# $actions est un tableau dont la clef correspond a un nom # de variable, et la valeur correspond a une methode de la # classe derivee. Là j'ai du mal à comprendre sans plus d'infos : selon le type d'action qui
est une variable reçue dans l'URL, on appelle telle ou telle méthode, c'est ça ?
var $actions = array( 'creer' => 'CreerSoiree' ); Et ensuite on ajoute 'modifier' =>'ModifierSoiree' et si on reçoit dans
l'url $toto==modifier, on appelle la bonne méthode donc si je comprends bien. En gros on réinvente le switch... Ne pas oublier de vérifier que in_array() la valeur demandée et traiter une erreur si absente.
Dans ces conditions, j'ai du mal a voir comment gerer le contenu a afficher en fonction de la validité du formulaire. Il faudrait supprimer $layout, et l'affecter a une nouvelle classe, associée au bon template de contenu que je souhaite voir afficher. Non , seulement d'instancier l'objet à un autre moment a priori.
a++; JG
Re,
Non, tu aimerais que soit affichée une autre information. C'est ça ton
besoin.
Heu, oui, mais dans ma conception (voir suite), une information est
rattachée a une page (serait-ce l'erreur ?).
Ca me parait en effet très réducteur comme vision, mais on doit bien
pouvoir s'en affranchir.
require('print_form.php'); exit();
Ha, bah la, non, rien ne va plus.
Mais si. Tout votre code avec les layout et le tutti quanti possède bien
un point d'entrée (quand on instancie les objets "kivonbien"). Si ce point
d'entrée est dans entree.php, il suffit de faire require('entree.php');
exit(); à la place de
header("Location:entree.php?chiée_de_paramètres=TRUE");
Rien de plus.
Bon, j'ai besoin d'un petit coup de main pour vérifier ma conception :
seriez vous en train de la remettre en question ?
A priori non. Seulement son appel.
En fait, je me suis fait quelques classes permettant de faciliter le
developpement.
Admettons. Quand je vois les noeuds au cerveau que ça vous cause, j'émets
uin doute sur la partie "faciliter", mais admettons ;-)
function PrintContenu()
{
include($this->template);
}
En gros y'a qu'elle qui bosse, tout le reste c'est du temps perdu et des
couches empilées pour rien. Au passage, n'utilisez plus include mais
require(), ou alors testez le retour de l'appel à include (cf la FAQ du
forum pour la différence entre les deux, http://faqfclphp.free.fr/).
# $actions est un tableau dont la clef correspond a un nom
# de variable, et la valeur correspond a une methode de la
# classe derivee.
Là j'ai du mal à comprendre sans plus d'infos : selon le type d'action qui
est une variable reçue dans l'URL, on appelle telle ou telle méthode,
c'est ça ?
var $actions = array( 'creer' => 'CreerSoiree' );
Et ensuite on ajoute 'modifier' =>'ModifierSoiree' et si on reçoit dans
l'url $toto==modifier, on appelle la bonne méthode donc si je comprends
bien. En gros on réinvente le switch...
Ne pas oublier de vérifier que in_array() la valeur demandée et traiter
une erreur si absente.
Dans ces conditions, j'ai du mal a voir comment gerer le contenu a
afficher en fonction de la validité du formulaire. Il faudrait
supprimer $layout, et l'affecter a une nouvelle classe, associée au
bon template de contenu que je souhaite voir afficher.
Non , seulement d'instancier l'objet à un autre moment a priori.
Non, tu aimerais que soit affichée une autre information. C'est ça ton besoin. Heu, oui, mais dans ma conception (voir suite), une information est
rattachée a une page (serait-ce l'erreur ?). Ca me parait en effet très réducteur comme vision, mais on doit bien
pouvoir s'en affranchir.
require('print_form.php'); exit(); Ha, bah la, non, rien ne va plus.
Mais si. Tout votre code avec les layout et le tutti quanti possède bien
un point d'entrée (quand on instancie les objets "kivonbien"). Si ce point d'entrée est dans entree.php, il suffit de faire require('entree.php'); exit(); à la place de header("Location:entree.php?chiée_de_paramètres=TRUE");
Rien de plus.
Bon, j'ai besoin d'un petit coup de main pour vérifier ma conception : seriez vous en train de la remettre en question ? A priori non. Seulement son appel.
En fait, je me suis fait quelques classes permettant de faciliter le developpement. Admettons. Quand je vois les noeuds au cerveau que ça vous cause, j'émets
uin doute sur la partie "faciliter", mais admettons ;-)
function PrintContenu() { include($this->template); } En gros y'a qu'elle qui bosse, tout le reste c'est du temps perdu et des
couches empilées pour rien. Au passage, n'utilisez plus include mais require(), ou alors testez le retour de l'appel à include (cf la FAQ du forum pour la différence entre les deux, http://faqfclphp.free.fr/).
# $actions est un tableau dont la clef correspond a un nom # de variable, et la valeur correspond a une methode de la # classe derivee. Là j'ai du mal à comprendre sans plus d'infos : selon le type d'action qui
est une variable reçue dans l'URL, on appelle telle ou telle méthode, c'est ça ?
var $actions = array( 'creer' => 'CreerSoiree' ); Et ensuite on ajoute 'modifier' =>'ModifierSoiree' et si on reçoit dans
l'url $toto==modifier, on appelle la bonne méthode donc si je comprends bien. En gros on réinvente le switch... Ne pas oublier de vérifier que in_array() la valeur demandée et traiter une erreur si absente.
Dans ces conditions, j'ai du mal a voir comment gerer le contenu a afficher en fonction de la validité du formulaire. Il faudrait supprimer $layout, et l'affecter a une nouvelle classe, associée au bon template de contenu que je souhaite voir afficher. Non , seulement d'instancier l'objet à un autre moment a priori.