Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-08-2007 18:44:23

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

ZfBlog de thomas

J'ai commencé à regardé les sources là.

Y'as déjà plein de choses smile

Par contre je sais pas si c'est une bonne méthode pour tout ce qui est gestion de formulaire moi je groupe l'édition et l'ajout  avec une methode formAction() et une méthode saveAction()

Si vous voulez un exemple, je trouve ça plus claire en faire car hormis quelques points c les mêmes controles, les mêmes procédures et grâce à Zend_Db  un update ou insert suffise smile


Société : Direct Info Service

Hors ligne

 

#2 02-08-2007 20:45:17

thomas
Membre
Lieu: Caen
Date d'inscription: 15-04-2007
Messages: 47
Site web

Re: ZfBlog de thomas

Salut,

Je vais réfléchir à ta suggestion, c'est intéressant.
Même en dissociant les deux, tel qu'actuellement, je trouve que ça reste relativement compact, puisque j'utilise un composant "maison" qui gère l'affichage et la validation des formulaires, même en multipages (c'est un composant basé sur composite/visitor).

Pour l'instant chaque action est gérée schématiquement de cette façon :

Code:

public function editAction() {
    if (isset($form_submitted)) {
        /* Update */
    } else {
        $myform = new Form();
        $myform->addPage();
        $myform->addField("titre", [...]);
        [...]
        $this->view->form = $myform;
    }
}

Ce que tu proposes, c'est d'appeler une nouvelle méthode "saveAction" pour effectuer Insert ou Update  au lieu de le gérer dans editAction ou addAction, c'est bien ça ?


Thomas

Hors ligne

 

#3 02-08-2007 23:33:13

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: ZfBlog de thomas

voilà c'est ça smile

Euh je me sens ignorant d'un coup. C'est quoi composite/visitor ?

Je te montrerais un bout de code demain.
En fait je gère la validation dans mon model aussi.


Société : Direct Info Service

Hors ligne

 

#4 03-08-2007 09:30:55

thomas
Membre
Lieu: Caen
Date d'inscription: 15-04-2007
Messages: 47
Site web

Re: ZfBlog de thomas

Salut,

    Composite et Visitor sont des motifs de conception ("design patterns"), des éléments d'architecture logicielle. Ne te sens pas ignorant, je suis loin d'être un expert wink
Si tu veux des infos à ce sujet : http://www.patternsforphp.com

    Par ailleurs, pour info, le composant qui gère mes formulaires se situe dans app/lib/My/Formosite/, et Formosite.mod.php répertorie toutes les classes impliquées.

    Il serait intéressant d'intégrer Zend_Filter_Input pour intercepter $_POST et appliquer les mécanismes de validation. Je ne l'ai pas étudié en détail, mais puisque l'objectif est aussi de valoriser le ZF, je suis tout à fait prêt à abandonner mon composant "home-made" au profit des mécanismes du ZF. Qu'en pensez vous ?

A+


Thomas

Hors ligne

 

#5 03-08-2007 10:38:06

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: ZfBlog de thomas

Ok je suis allé me documenter un peu. smile. Dans un soucis de clareté et simplicité je pense qu'il serait mieux d'utiliser toutes les possibiltiées du ZF. Mais je suis ouvert à de nouveaux apprentissages smile.

Je te montre un petit bout de code, c'est pour une plateforme d'ecommerce multilingue.

La méthode form, qui gérer l'affichage du formulaire. Elle prend en compte l'affichage pour ajoute / modification et réaffichage en cas d'erreurs de validation.

Code:

    public function formAction()
    {
        include 'categorie.php';

        if( ( $objects = $this->_getParam('objects', NULL) ) == NULL ){
            $_partenaire = new partenaire();
            $_partenaire_data = new partenaire_data();
            
            if( ( $id = $this->_getParam('id', NULL) ) != NULL){
                $partenaire= $_partenaire->find($id)->toArray();
                $partenaire= $partenaire[0];
                $partenaire_data= $_partenaire_data->byPartenaireId($id);
            }
            else{
                $partenaire = $_partenaire->fetchNew()->toArray();
                $partenaire_data['fr_FR'] = $_partenaire_data->fetchNew()->toArray();
                $partenaire_data['fr_FR']['content'] = 'Votre contenu en Français';
                $partenaire_data['fr_FR']['language'] = 'fr_FR';
            }
        }
        else{
            $partenaire = $objects['partenaire'];
            $partenaire_data= $objects['partenaire_data'];
        }
        
        $this->view->partenaire = $partenaire;
        $this->view->partenaire_data = $partenaire_data;

        $_categorie = new categorie();
        $categories = $_categorie->selectOptions();
        foreach ($categories as $key => $categorie)
        {
          $categories[$key]['selected']= ($categorie['id'] == $partenaire['categorie_id']) ? true : false;
        }
        $this->view->categories = $categories;

        $this->render();
    }

La méthode save  qui gére donc la validation grâce au model et l'insert / l'update si un id existe ou pas.

Code:

public function saveAction()
{
        $_partenaire = new partenaire();
        $_partenaire_data = new partenaire_data();
        $errors = array();

        $my_partenaire = $_partenaire->valid($this->getRequest()->getPost('partenaire'));
        $my_partenaire_data = $_partenaire_data->valid($this->getRequest()->getPost('partenaire_data'));
        $my_logo = $_FILES['logo'];

        if( $_partenaire->has_errors() ) $errors['partenaire'] = $_partenaire->get_errors();
        if( $_partenaire_data->has_errors() ) $errors['partenaire_data'] = $_partenaire_data->get_errors();
        
        if( !empty($errors) )
        {
            $data = array('partenaire'=>$my_partenaire);
            $this->_forward('form', 'partenaire', null, array('data' => $data, 'errors' => $errors));

            return ;
        }
        else
        {

            $my_partenaire['url'] = Dis_Filter::url($my_partenaire['title']);
            if($my_partenaire['id'] > 0){
                $_partenaire->update($my_partenaire, 'id = '.$my_partenaire['id']);
                
                foreach ($my_partenaire_data as $item){
                    $item['partenaire_id'] = $my_partenaire['id'];
                    $_partenaire_data->update($item, 'id = '.$item['id']);
                }
                
                $flash_message['state'] = 'true';
                $flash_message['message'] = "Le partenaire est mis à jour";

            }
            else{
                $my_partenaire['id'] = $_partenaire->insert($my_partenaire);
                foreach ($my_partenaire_data as $item){
                    $item['partenaire_id'] = $my_partenaire['id'];
                    $_partenaire_data->insert($item);
                }
                $flash_message['state'] = 'true';
                $flash_message['message'] = "Le partenaire est ajouté";
            }

            $this->session->flash_message = $flash_message;

            $this->_redirect('/partenaire/index');

        }

    }

Dans le model on utilise Zend_Filter_Input pour valider et zoup smile
Voilà vous en pensez quoi ?


Société : Direct Info Service

Hors ligne

 

#6 03-08-2007 17:47:57

thomas
Membre
Lieu: Caen
Date d'inscription: 15-04-2007
Messages: 47
Site web

Re: ZfBlog de thomas

Ca me paraît bien. Tu penses que tu pourrais proposer un système de CRUD basé là-dessus pour le "ZFBlog" ?

Peut-être pourrait-on remplacer l'opération de suppression par un changement d'état (brouillon / publié), je pense à WordPress en disant ça. De toute façon il faut qu'on reparle de la base de données. Je suis parti sur SQLite pour faciliter l'installation (qui est déjà un peu spéciale) et parce que l'accès en écriture n'est pas sensé être massif sur un blog, mais je n'ai pas d'expérience avec ce type de base. Vous avez un avis sur la question ?


Thomas

Hors ligne

 

#7 03-08-2007 17:58:05

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: ZfBlog de thomas

Oui y'as moyen de développer rapidement les actions de bases comme ça. Il faudrait avoir l'avis de Phillipe aussi ? smile Et biensûr d'autres sont bienvenus !

Je pense que grâce au ZF on pourrait facilement proposer du sqlite et mysql.
Je n'ai jamais utilisé sqlite par contre. Bon peut de choses changes.

Par contre si on utilise Mysql par défaut. Pourquoi ne pas utiliser à fond les possibilités de ce SGBD ?
Je pense aux vues, triggers. Un Mysql 5 biensûr.

ZfBlog / Cms   pourrait être un concentré des dernières "technologies". On reproche souvent à Php d'être un peu "amateur". Je pense qu'en ayant un code "dernière génération" et en utilisant les pleines fonctionnalités des différents outils celà ferait un beau bébé smile


Société : Direct Info Service

Hors ligne

 

#8 03-08-2007 20:02:28

thomas
Membre
Lieu: Caen
Date d'inscription: 15-04-2007
Messages: 47
Site web

Re: ZfBlog de thomas

Effectivement, avis aux ZFiens de bonne volonté ! Je pense qu'on a largement de quoi se partager la tâche... Sutout avec les ambitions de Yannux wink

Si on part sur MySQL par défaut, je doute que la couche d'abstraction résiste suffisamment longtemps pour SQLite : les fonctionnalités sont quand même largement plus limitées. Mais ça me va.


A+

Dernière modification par thomas (03-08-2007 20:08:01)


Thomas

Hors ligne

 

#9 03-08-2007 20:59:46

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: ZfBlog de thomas

intéressant comme sujet!

Sinon je voix pas pk vous vous préoccupez d'uen base de donnée particulière, si l'on utilise pdo les mécanismes sont assez simple et comme ZF a des système de construction de requête ...

perso je compte suivre avec attention ce que vous faites ...


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#10 03-08-2007 21:47:00

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: ZfBlog de thomas

Surtout pour l'optimisatio en faite.
Par exemple tu n'as pas de vue ou triggers dans sqlite je crois. 

En faite oui comme dit thomas j'ai de l'ambition wink J'aimerais qu'on réalise une plateforme assez puissante quand même. Pas forcément accessible au plus grand public niveau installation. Mais quelquechose de très fonctionnel. plutot orienté professionel, ou "semi-pro".

Qu'en pensez vous ?

En gros wordpress c'st génial, j'adore, je l'utilise dans ma boite, mais niveau code ça fait mal. C'est pas une mauvaise critique, c'est juste l'occasion avec le ZF de construire du solide, clean....

Je voudrais pas paraitre méchant !


Société : Direct Info Service

Hors ligne

 

#11 03-08-2007 21:50:26

Grummfy
Membre
Lieu: Belgique
Date d'inscription: 01-08-2007
Messages: 232
Site web

Re: ZfBlog de thomas

ZF est à la base destiné au pro, donc cela parait tout désigné!


Engagez-moi! : Cherche job en Belgique autour de Namur (1 heure de route autour)
blog - ZF Planet

Hors ligne

 

#12 03-08-2007 22:41:45

thomas
Membre
Lieu: Caen
Date d'inscription: 15-04-2007
Messages: 47
Site web

Re: ZfBlog de thomas

Je suis assez en accord avec ce que tu dis, yannux, mais dans ce cas il faut peut-être envisager de plancher directement sur un CMS, car si on propose un moteur de blog inaccessible à l'utilisateur de base, qui va s'en servir ?


Thomas

Hors ligne

 

#13 03-08-2007 23:12:26

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: ZfBlog de thomas

oui de toute façon blog / cms ..... le CMS a un workflow plus poussé je pense, sinon on reste sur de la gestion de contenu. Non ?


Société : Direct Info Service

Hors ligne

 

#14 04-08-2007 10:21:40

thomas
Membre
Lieu: Caen
Date d'inscription: 15-04-2007
Messages: 47
Site web

Re: ZfBlog de thomas

oui, mais je disais juste que l'utilisateur final n'est pas le même. Bref, on est d'accord smile


Thomas

Hors ligne

 

#15 04-08-2007 12:38:38

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: ZfBlog de thomas

Oui totalement d'accord smile
Et hop +1 post, c'est pour faire croire qu'on est beaucoup ^^


Société : Direct Info Service

Hors ligne

 

#16 04-08-2007 22:02:03

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: ZfBlog de thomas

Tu aurais le script SQL de création de la base de données ? Je vais faire un beau petit schéma qui sera modifiable smile


Société : Direct Info Service

Hors ligne

 

#17 05-08-2007 20:17:48

thomas
Membre
Lieu: Caen
Date d'inscription: 15-04-2007
Messages: 47
Site web

Re: ZfBlog de thomas

Code:

CREATE TABLE articles (
id INTEGER not null PRIMARY KEY, 
title varchar (150) not null, 
body text not null, 
date date not null, 
time time not null,
author varchar (50) not null, 
url varchar (100) not null, 
perm varchar(150) not null
);

CREATE TABLE users (
id INTEGER not null PRIMARY KEY,
login varchar(10) not null, 
password varchar (10) not null,  
role varchar (10) not null
);

A+


Thomas

Hors ligne

 

#18 06-08-2007 10:05:13

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: ZfBlog de thomas

Au niveau dev, on code tout en anglais ou français ? Noms de clases, de fonctions, chaines de caractères à affichés, etc.... smile


Société : Direct Info Service

Hors ligne

 

#19 06-08-2007 11:11:18

thomas
Membre
Lieu: Caen
Date d'inscription: 15-04-2007
Messages: 47
Site web

Re: ZfBlog de thomas

Je vote pour l'anglais pour le code. Côté utilisateur, il faut qu'on intègre Zend_Translate dès le démarrage, je pense, ça nous simplifiera la tâche.


Thomas

Hors ligne

 

#20 06-08-2007 11:36:07

ndesaleux
Membre
Date d'inscription: 16-04-2007
Messages: 196
Site web

Re: ZfBlog de thomas

+1 pour thomas, anglais facilitera l'internationalisation du coding, et implementer de base Zend_Translate permettra de ne pas avoir à le gérer plus tard wink

Pour i18n, j'utiliserai plusieurs instance de Zend_Translate.
2 instances (erreur, interface) par partie (admin, module, interface générale)
1 pour la gestion des dates

Cela me semble assez modulaire et permettrai d'éviter de charger 1 seul gros fichiers.

My 2 cents

Hors ligne

 

#21 06-08-2007 13:04:53

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: ZfBlog de thomas

Ca me va aussi. On met les messages en anglais par défaut ? et on fait la translation FR de base ?
L'anglais est généralement plus connu pour étoffer les futures langues traduites. ?


Concernant la base de donnée je trouve celle de DC2 très bien foutue...je sais pas si certains on déjà vue ? Je pense qu'on a le droit de la reprendre en le précisant ?

Dernière modification par yannux (06-08-2007 13:13:47)


Société : Direct Info Service

Hors ligne

 

#22 06-08-2007 13:44:18

ndesaleux
Membre
Date d'inscription: 16-04-2007
Messages: 196
Site web

Re: ZfBlog de thomas

yannux a écrit:

Concernant la base de donnée je trouve celle de DC2 très bien foutue...je sais pas si certains on déjà vue ? Je pense qu'on a le droit de la reprendre en le précisant ?

Le plus simple serait de demander à la DC team wink a voir aussi la DB de Wordpress Mu

Hors ligne

 

#23 06-08-2007 14:00:06

thomas
Membre
Lieu: Caen
Date d'inscription: 15-04-2007
Messages: 47
Site web

Re: ZfBlog de thomas

Le mieux est, je pense, anglais par défaut, avec une traduction FR pour la première beta, c'est le minimum (on est sur z-f.fr, quand même wink ).

je ne suis pas un expert SGBD, reprendre quelquechose qui fonctionne bien est peut-être une bonne idée. Surtout si tu la connais déjà. Reste à voir avec la DC team avec moultes courbettes smile


Thomas

Hors ligne

 

#24 06-08-2007 15:51:11

thomas
Membre
Lieu: Caen
Date d'inscription: 15-04-2007
Messages: 47
Site web

Re: ZfBlog de thomas

Tu te rencardes pour la base de données, Yannux ?

Ndesaleux, es-tu intéressé par le projet ? Souhaiterais-tu y participer ?


Thomas

Hors ligne

 

#25 06-08-2007 18:11:41

ndesaleux
Membre
Date d'inscription: 16-04-2007
Messages: 196
Site web

Re: ZfBlog de thomas

Ouaip, je veux bien y participer.

Juste pour savoir, vous vous orienter vers moteur de blog ou CMS plus complet ?

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