Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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
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
Hors ligne
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
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
Hors ligne
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
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)
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)
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)
class Contact { public $id = 0; public $name = ""; public $email = ""; public $phone = ""; }
Et pour le code flex :
AmfZend.mxml
<?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
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
J'ai la même erreur, as-tu résolu ton problème?
Si oui comment?
Merci d'avance.
Farf
Hors ligne
Non toujours pas réussit ... si quelqu'un a une idée ?
Hors ligne
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
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
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
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.
Merci
++
Hors ligne
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
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
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
Oui c'est possible. Comment ? Je n'en sais strictement rien car je n'utilise pas Flex.
Hors ligne
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
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