What are the 2 files TestNamesInVO.php and TestNamesOutVO.php for? Isn't it easier to just go to the TestService.php and get the returned information their. What is the functions of the 2 files.
Thanks again, timgerr --- In flexcoders@yahoogroups.com, "valdhor" <[EMAIL PROTECTED]> wrote: > > This seems to be a convoluted way to do this. > > I have created a simple example to show you how I use WebOrb. > > On my server I have the WebORB directory at the root level. In the > Services directory I have a MyServices directory and in this directory I > have a ValueObjects directory. For this example I have two files: > > ===================================================================== > TestNamesInVO.php: > <?php > class TestNamesInVO > { > public $FirstName; > public $LastName; > > public function __construct($FirstName, $LastName) > { > $this->FirstName = $FirstName; > $this->LastName = $LastName; > } > } > ?> > ===================================================================== > TestNamesOutVO.php: > <?php > class TestNamesOutVO > { > public $FullName; > > public function __construct($FullName) > { > $this->FullName = $FullName; > } > } > ?> > ===================================================================== > > The constructors are there just to make it easier to create a new > object. They are optional. > > In the MyServices directory I have a TestService.php file. This contains > all the functions available with this service. > > ===================================================================== > TestService.php: > <?php > class TestService > { > function ShowMe() > { > return "Tom Jones"; > } > > function ShowName($name) > { > return 'Hello ' . $name; > } > > function ShowNames(TestNamesInVO $namesIn) > { > require_once("ValueObjects/TestNamesInVO.php"); > require_once("ValueObjects/TestNamesOutVO.php"); > > $fullName = new TestNamesOutVO($namesIn->FirstName . " " . > $namesIn->LastName); > > return $fullName; > } > } > ?> > ===================================================================== > > In flex I also have a ValueObjects folder underneath my src folder. This > folder contains the corresponding ActionScript files for the value > objects on the server: > > ===================================================================== > TestNamesInVO.as: > package ValueObjects > { > [RemoteClass(alias="MyServices.ValueObjects.TestNamesInVO")] > [Bindable] > public class TestNamesInVO > { > //instance variables > private var _FirstName:String; > private var _LastName:String; > > //accessor methods > public function get FirstName():String {return _FirstName;} > public function get LastName():String {return _LastName;} > > //mutator methods > public function set FirstName(FirstName:String):void {_FirstName > = FirstName;} > public function set LastName(LastName:String):void {_LastName = > LastName;} > } // end class > }//end package > ===================================================================== > TestNamesOutVO.as: > package ValueObjects > { > [RemoteClass(alias="MyServices.ValueObjects.TestNamesOutVO")] > [Bindable] > public class TestNamesOutVO > { > //instance variables > private var _FullName:String; > > //accessor methods > public function get FullName():String {return _FullName;} > > //mutator methods > public function set FullName(FullName:String):void {_FullName = > FullName;} > } // end class > }//end package > ===================================================================== > > Note the RemoteClass metadata. This tells flex the location of the class > on the server that matches this class (In relation to the Services > directory). > > Finally we have the Flex application that makes calls to functions > within this service. > > ===================================================================== > WebORBExample.mxml: > <?xml version="1.0" encoding="utf-8"?> > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" > layout="absolute" > creationComplete="onCreationComplete()"> > <mx:Script> > <![CDATA[ > import mx.messaging.channels.AMFChannel; > import mx.messaging.ChannelSet; > import mx.rpc.events.FaultEvent; > import mx.rpc.events.ResultEvent; > import mx.rpc.remoting.RemoteObject; > import mx.managers.CursorManager; > import mx.controls.Alert; > import ValueObjects.TestNamesInVO; > import ValueObjects.TestNamesOutVO; > > private var channelSet:ChannelSet; > private var amfChannel:AMFChannel; > private var testService:RemoteObject; > > private function onCreationComplete():void > { > channelSet = new ChannelSet(); > amfChannel = new AMFChannel("my-amf", > "http://myserver/WebORB/weborb.php"); > channelSet.addChannel(amfChannel); > > testService = new RemoteObject(); > testService.channelSet = channelSet; > testService.destination = "MyServices.TestService"; > testService.requestTimeout = 15; > > testService.ShowMe.addEventListener(ResultEvent.RESULT, > ShowMeHandler); > > testService.ShowName.addEventListener(ResultEvent.RESULT, > ShowNameHandler); > > testService.ShowNames.addEventListener(ResultEvent.RESULT, > ShowNamesHandler); > testService.addEventListener(FaultEvent.FAULT, > faultHandler); > } > > > private function runShowNames():void > { > var person:TestNamesInVO = new TestNamesInVO(); > person.FirstName = "Tom"; > person.LastName = "Jones"; > testService.ShowNames(person); > CursorManager.setBusyCursor(); > } > > private function ShowMeHandler(event:ResultEvent):void > { > Alert.show(event.result.toString()); > } > > private function ShowNameHandler(event:ResultEvent):void > { > Alert.show(event.result.toString()); > } > > private function ShowNamesHandler(event:ResultEvent):void > { > CursorManager.removeBusyCursor(); > var personReturned:TestNamesOutVO = event.result as > TestNamesOutVO; > Alert.show(personReturned.FullName); > } > > private function faultHandler(fault:FaultEvent):void > { > CursorManager.removeBusyCursor(); > switch(fault.fault.faultCode.toString()) > { > case "Client.Error.RequestTimeout": > Alert.show("The server is not responding. > Please check that you are connected and the server is running.", "Server > Timeout"); > break; > default: > Alert.show(fault.fault.faultString, > fault.fault.faultCode.toString()); > break; > } > } > > ]]> > </mx:Script> > <mx:HBox horizontalAlign="center"> > <mx:Button label="ShowMe" click="{testService.ShowMe()}"/> > <mx:Button label="ShowName" click="{testService.ShowName('Tom > Jones')}"/> > <mx:Button label="ShowNames" click="runShowNames()"/> > </mx:HBox> > </mx:Application> > ===================================================================== > > If you have any more questions, please don't hesitate to ask. > > > > --- In flexcoders@yahoogroups.com, "timgerr" <tim.gallagher@> wrote: > > > > OK, so I have created this hello world service and then had WebOrb > > create the code I see in the actionscript comments This: > > > > (If using Model-View-Controller) > > - Modify the constructor of the class below to accept the controller > > object > > - Modify response handlers to pass return values to the controller > > > > (if not using MVC) > > - Modify the constructor of the class below to accept your View object > > - Modify response handlers to display the result directly in the View > > > > I am not useing MVC so I have to use the 2nd commented option. the > > problem is I am not sure what to do, someone help me? > > > > Here is my PHP code: > > <?php > > class HelloWorld { > > function ShowMe() > > { > > return "Tom Jones"; > > } > > function ShowName($name) > > { > > return 'Hello ' . $name; > > } > > } > > ?> > > So I have 2 methods, ShowMe and ShowName. > > > > Here is my as code: > > package comp.HelloWorld > > { > > import mx.rpc.remoting.RemoteObject; > > import mx.controls.Alert; > > import mx.rpc.events.ResultEvent; > > import mx.rpc.events.FaultEvent; > > import mx.rpc.AsyncToken; > > import mx.rpc.IResponder; > > > > import comp.HelloWorld.vo.*; > > > > public class HelloWorld > > { > > private var remoteObject:RemoteObject; > > private var model:HelloWorldModel; > > > > public function HelloWorld( model:HelloWorldModel = null ) > > { > > remoteObject = new RemoteObject("GenericDestination"); > > remoteObject.source = "comp.HelloWorld.HelloWorld"; > > > > remoteObject.ShowMe.addEventListener("result",ShowMeHandler); > > remoteObject.ShowName.addEventListener("result",ShowNameHandler); > > remoteObject.addEventListener("fault", onFault); > > > > if( model == null ) > > model = new HelloWorldModel(); > > > > this.model = model; > > > > } > > > > public function setCredentials( userid:String, password:String > > ):void > > { > > remoteObject.setCredentials( userid, password ); > > } > > > > public function GetModel():HelloWorldModel > > { > > return this.model; > > } > > > > public function ShowMe( responder:IResponder = null):void > > { > > var asyncToken:AsyncToken = remoteObject.ShowMe(); > > > > if( responder != null ) > > asyncToken.addResponder( responder ); > > } > > > > public function ShowName( name:String, responder:IResponder = > > null):void > > { > > var asyncToken:AsyncToken = remoteObject.ShowName( name); > > > > if( responder != null ) > > asyncToken.addResponder( responder ); > > } > > public virtual function ShowMeHandler(event:ResultEvent):void > > { > > var returnValue:Object = event.result as Object; > > model.ShowMe = event.result as Object; > > } > > > > public virtual function ShowNameHandler(event:ResultEvent):void > > { > > var returnValue:Object = event.result as Object; > > model.ShowName = event.result as Object; > > } > > > > public function onFault (event:FaultEvent):void > > { > > Alert.show(event.fault.faultString, "Error"); > > } > > } > > > > } > > > > I get an error on: import comp.HelloWorld.vo.* (not sure what this is > > or how to create it) > > > > > > And here is another chunck of code that I have to modify > > > > public virtual function ShowMeHandler(event:ResultEvent):void > > { > > var returnValue:Object = event.result as Object; > > model.ShowMe = event.result as Object; > > } > > > > public virtual function ShowNameHandler(event:ResultEvent):void > > { > > var returnValue:Object = event.result as Object; > > model.ShowName = event.result as Object; > > } > > > > I get an error: > > (Severity and Description Path Resource Location Creation Time Id > > 1119: Access of possibly undefined property ShowMe through a reference > > with static type comp.HelloWorld:HelloWorldModel. > > WeborbHelloworld/src/comp/HelloWorld HelloWorld.as line 95 > > 1222790567712 8938) > > > > On these 2 lines of code: > > model.ShowMe = event.result as Object; > > model.ShowName = event.result as Object; > > > > I just want to return that stuff, what do I have to do in order to fix > > the errors. > > > > Thanks, > > timgerr > > >