Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 04-11-2008 16:59:03

angusyoung34
Membre
Date d'inscription: 07-05-2008
Messages: 14

Flex <-> AMF <-> PHP (biblio AMFPHP)

Bonjour,

Je me pose la question suivante :

> Est-ce utile de mettre en place le motif de conception MVC (celui de Zend entre autre) au niveau server sachant que les échanges entre mon client riche (réalisé en Flex) et mon server seront en AMF (biblio AMFPHP coté server) ?

> Dans l'affirmative, il y a t'il des tutos sur la mise en place du MVC avec de l'AMFPHP coté server ?

Merci bcp,

Anthony

Hors ligne

 

#2 04-11-2008 18:55:06

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

Bonjour,

Si toute la logique métier de ton application est coté flex, du coté serveur, il n'y a plus de notion de vue ou de navigation. Dans ce cas en gros, tu ne fais que des requêtes genre appel de fonction à distance.

Si tu es bien dans ce cas, a priori le MVC ne te servira pas à grand chose je pense.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 04-11-2008 20:17:47

angusyoung34
Membre
Date d'inscription: 07-05-2008
Messages: 14

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

Merci Philippe pour ta réponse. Je cherchais à savoir si d'une manière générale le MVC coté server est utile avec des échanges en AMF (donc que des appels de fonctions depuis le client vers le server).

Merci bcp !

Anthony

Hors ligne

 

#4 05-11-2008 01:00:14

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

Zend_Amf arrive avec la 1.7 (ce mois ci) ^^
MVC peut rester utile si l'appli est lourde et que la maintenabilité doit être assurée. Tu peux continuer d'appeler des actions sur des contrôleurs, c'est justement fait pour ça smile

Hors ligne

 

#5 05-11-2008 11:50:18

angusyoung34
Membre
Date d'inscription: 07-05-2008
Messages: 14

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

Salut Julien !

Oui j'ai installé la 1.7 du framework Zend avec AMF inclus :-) !
Pour revenir à ma question de base :
> comment dois-je organiser mon développement dans le repertoire "application\" si j'utilise que des échanges en AMF.

"application\modele\ ???" : je dois mettre mes services AMF ici ??
"application\view\ ???" : rien ... enfin je pense ??
"application\controller\???" : que dois-je y mettre ??

Merci pour vos aides précieuses

Antho

Hors ligne

 

#6 18-11-2008 14:48:18

Dator
Membre
Lieu: Lyon
Date d'inscription: 14-05-2008
Messages: 10
Site web

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

Bonjour,

Je viens de me lancer dans la nouvelle version de Zend (La version1.7).
Je voulais tester le composant Zend_Amf mais il me sort une erreurs.

IndexController.php (/controllers)

Code:

require_once 'Zend/Controller/Action.php';

class IndexController extends Zend_Controller_Action 
{
    /**
     * The default action - show the home page
     */
    public function indexAction() 
    {
        // TODO Auto-generated IndexController::indexAction() action
        $amfObject = new Zend_Amf_Server();
        $amfObject -> setClass('ContactService');
           $amfObject -> handle();
    }
}

ContactService.php (/models)

Code:

class ContactService {
    /** 
    * get contacts 
    *  
    * @return array
    **/ 
    function getContacts() {
        $dbh = mysql_connect('localhost', 'root');
        $listAll = 'SELECT * FROM contacts.contacts';
        $result = mysql_query($listAll, $dbh);
        $contactsArray = array();
        while ($row = mysql_fetch_array($result)) {
            $contact = new Contact();
            $contact->name = $row['name'];
            $contact->email = $row['email'];
            $contact->phone = $row['phone'];
            array_push($contactsArray, $contact);
        }
        return $contactsArray;
      }
      
    /** 
    * save 
    * 
    * @param  Contact $contact 
    * @return null 
    **/       
      function saveContact(Contact $contact) {
          $name = $contact->name;
          $email = $contact->email;
          $phone = $contact->phone;
          $dbh = mysql_connect('localhost', 'root');
          $insert = "INSERT INTO contacts.contacts (id, name, email, phone) VALUES (NULL, '$name', '$email', '$phone')";
        $doInsert = mysql_query($insert, $dbh);
      }
}

Contact.php (/models)

Code:

class Contact {
    public $id = 0;
    public $name = "";
    public $email = "";
    public $phone = "";
}

Et pour le code flex :

AmfZend.mxml

Code:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
    creationComplete="myservice.getContacts()"> 
    
     <mx:Script> 
        <![CDATA[
            import mx.collections.ArrayCollection;
            import mx.automation.codec.ArrayPropertyCodec;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;        
            import ContactVO;
            import mx.controls.Alert;
            import mx.utils.ArrayUtil;
            
            [Bindable] public var dp:ArrayCollection;
            
            public function handleContacts(event:ResultEvent):void {
                dp = new ArrayCollection(ArrayUtil.toArray(event.result));
                myDG.dataProvider = dp;
            }
            
            public function handleFault(event:FaultEvent):void {
                Alert.show(event.fault.faultDetail, event.fault.faultCode);
            }
            
            public function saveContact():void {
                var newContact:ContactVO = new ContactVO();
                newContact.name = nameInput.text;
                newContact.email = emailInput.text;
                newContact.phone = phoneInput.text;
                myservice.saveContact(newContact);
            }
            
            public function handleSave(event:ResultEvent):void {
                myservice.getContacts();
                nameInput.text = '';
                emailInput.text = '';
                phoneInput.text = '';
            } 
        ]]> 
    </mx:Script> 
    
    <mx:RemoteObject endpoint="http://localhost/ZendFramework17/public/" 
        id="myservice" destination="zend" source="ContactService" 
        fault="handleFault(event)">
            <mx:method name="getContacts" result="handleContacts(event)" 
                fault="handleFault(event)"/>
            <mx:method name="saveContact" result="handleSave(event)" 
        fault="handleFault(event)"/>
    </mx:RemoteObject> 
    
    <mx:DataGrid id="myDG"  width="276" x="10" y="10" height="244"/>
    
    <mx:Panel x="10" y="262" width="276" height="217">
        <mx:TextInput id="nameInput" />
        <mx:TextInput id="emailInput" />
        <mx:TextInput id="phoneInput" />
        <mx:Button click="saveContact()" name="save"  label="Save"/>
    </mx:Panel>
</mx:Application>

et ContactVO.as

Code:

package
{
    public class ContactVO
    {
        public var id:int;
        public var name:String;
        public var email:String;
        public var phone:String;

        public function ContactVO()
        {
        }

    }
}

Et le plus important, le message d'erreur au chargement de la page (creationComplete) et quand je click sur le bouton "Save" :

Channel.Connect.Failed error NetConnection.Call.BadVersion: : url: 'http://localhost/ZendFramework17/public/'

Quelqu'un peut m'aider?

Merci beaucoup,

Cordialement

Clément , http://www.dator.fr

Hors ligne

 

#7 09-12-2008 20:55:33

farf
Membre
Date d'inscription: 21-11-2008
Messages: 37

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

J'ai la même erreur, as-tu résolu ton problème?

Si oui comment?

Merci d'avance.

Farf

Hors ligne

 

#8 15-12-2008 12:12:11

Dator
Membre
Lieu: Lyon
Date d'inscription: 14-05-2008
Messages: 10
Site web

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

Non toujours pas réussit ... si quelqu'un a une idée ?

Hors ligne

 

#9 21-01-2009 23:28:10

rdave
Nouveau membre
Date d'inscription: 20-01-2009
Messages: 8

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

t'as bien configuré le flex builder avec -services "service-config.xml" et le fichier associé ? Si t'appelle ton fichiers php directement depuis ton browser, ca affiche qqch, une erreur ?

dave

Hors ligne

 

#10 21-01-2009 23:30:33

rdave
Nouveau membre
Date d'inscription: 20-01-2009
Messages: 8

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

MVC peut rester utile si l'appli est lourde et que la maintenabilité doit être assurée. Tu peux continuer d'appeler des actions sur des contrôleurs, c'est justement fait pour ça smile

La je pige pas. Comment peux-tu appeler différents controleurs/actions puisque flex a un seul point d'entrée (fichier service-config.xml) et qu'il y parvient toujours par la même URL ??

dave

Hors ligne

 

#11 11-03-2009 17:09:12

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

Bonjour à tous,

Je me permet de faire un petit up sur ce sujet.

Je me pose les mêmes questions, comment organiser les dossiers, gérer, la cohabitation entre flex et zend.
Peut on integrer facilement flex a un projet zend et surtout, comment ?


Si quelqu'un a déjà une experience dans le domaine et pourait en faire part. hmm

Merci
++

Hors ligne

 

#12 30-09-2010 10:37:47

Pierrick
Nouveau membre
Date d'inscription: 30-09-2010
Messages: 1

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

rdave a écrit:

MVC peut rester utile si l'appli est lourde et que la maintenabilité doit être assurée. Tu peux continuer d'appeler des actions sur des contrôleurs, c'est justement fait pour ça smile

La je pige pas. Comment peux-tu appeler différents controleurs/actions puisque flex a un seul point d'entrée (fichier service-config.xml) et qu'il y parvient toujours par la même URL ??

dave

Bonjour,

petit déterrage de post ...

Nous avons exactement la même problématique. Dave, as-tu eu réponse à ta question ? Nous cherchons à intégrer le pattern MVC via Zend Controller or le mécanisme de dispatch se base sur l'URL qui est strictement identique (endpoint). Ma question est : Zend Controller peut-il être implémenté pour une application cliente Flex ?.

Si Julien Pauli passe par là ...

Merci de vos avis.

Hors ligne

 

#13 30-09-2010 10:58:50

Denis. Beurive
Membre
Date d'inscription: 06-06-2009
Messages: 35

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

Salut à tous,

Par rapport à vos projets :

La couche de présentation est-elle assurée entièrement par l'interface Flex? Dans ce cas, je ne vois pas l'intérêt d'utiliser le patron MVC, dans la mesure où le serveur n'a pas à gérer des vues... De plus la couche AMF présente un seul point d'entrée, ce qui est incompatible avec le mécanisme utilisé pour désigner le contrôleur et l'action associée. Il faudrait écrire un gros contrôleur "à tout faire", qui serait l'unique point d'entrée. On perd l'intérêt du MVC qui consiste justement à "séparer" au maximum les choses.

La couche de présentation est-elle assurée en partie par le serveur, et en partie par l'interface Flex? Un site WEB classique, en PHP/HTML/JavaScript/Ajax, avec quelques interfaces sympathiques en Flex. Dans ce cas, l'utilisation du patron MVC est pertinente.


J'ai beaucoup travaillé sur ELGG. Ce moteur dispose de sa propre implémentation du patron MVC. Les concepteurs de ELGG ont opté pour une solution "composite"

(*) Une implémentation du modèle MVC pour la mise en page HTML (côté serveur).

(*) Un système de services WEB pour s'interfacer avec des systèmes qui ne nécessitent pas de réponses HTML (Typiquement : Interfaces Flex, autres sites WEB,...).

A+

Hors ligne

 

#14 30-09-2010 11:23:55

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

Oui c'est possible. Comment ? Je n'en sais strictement rien car je n'utilise pas Flex.

Hors ligne

 

#15 30-09-2010 16:59:06

omega2
Membre
Lieu: Boisbriand, quebec, canada
Date d'inscription: 01-04-2009
Messages: 85
Site web

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

Au vu des derniers messages, ne serait-il pas possible d'utiliser simplement un plugin (dérivé de Zend_Controller_Plugin_Abstract) qui analyse les bonnes variables et définis le/les controlleurs et actions qui sont à traiter.

J'utilise ce principe non pas pour du flex mais pour afficher plusieurs vues en fonction de la page demandé par le visiteur.

Hors ligne

 

#16 08-10-2010 09:22:16

_Fuse_
Membre
Lieu: Aquitaine
Date d'inscription: 10-07-2008
Messages: 92

Re: Flex <-> AMF <-> PHP (biblio AMFPHP)

Salut,

J'ai utilisé Flex avec Zend, et voila ce que je peux en dire :

Il est possible de conserver (en partie) le pattern  MVC dans une appli flex/zend.

Flex gère tout le côté vue bien entendu. Par contre le rendu de vue est désactivé, le controller ne redispatch pas vers une vue spécifique, mais se contente de renvoyer la donnée.

Oubliez la génération automatique de service PHP dans FlashBuilder ça ne fonctionnera pas si votre appli utilise  une structure de dossier 'ZF'.
Perso je n'utilise pas de fichier 'service-config.xml'.

Dans la partie Flex pensez à l'utilisation des jetons (<s:CallResponder/>)  pour les remoteObject ils sont très pratiques.

@+.

Dernière modification par _Fuse_ (11-10-2010 11:49:48)

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