Amigos Flex Developers,
Faz tempo q acompanho esta lista passivamente, mesmo porque todas
minhas duvidas ao longo desse tempo foram sanadas com threads já
existentes, postadas por outros usuarios. No entanto, deparei-me com o
seguinte problema (nao encontrei no historico da lista):
Meu back-end ( php) não esta recebendo os argumentos do flex.
Verifiquei na perspectiva de debug do flex builder, e constatei que os
objetos sao criados corretamente, porem implesmente não chegam no php.
Lembrando que via browser amfphp os metodos funcionam normalmente.
Vejam os fontes:
//VO´s
<?php
class UserVO
{
public $coduser;
public $nome;
public $email;
public $login;
public $senha;
public $ativo;
public $root;
public $_explicitType = "br.com.sajsoft.sms.vo.UserVO";
}
?>
package br.com.sajsoft.sms.vo
{
[Bindable]
[RemoteClass(alias="br.com.sajsoft.sms.vo.UserVO")]
public class UserVO
{
public var coduser:uint;
public var nome:String;
public var email:String;
public var login:String;
public var senha:String;
public var ativo:String;
public var root:String;
}
}
//Classe remote
package br.com.sajsoft.sms.remote{
import br.com.sajsoft.sms.vo.UserVO;
import mx.controls.Alert;
import mx.rpc.AsyncToken;
import mx.rpc.Responder;
import mx.rpc.events.FaultEvent;
import mx.rpc.remoting.mxml.RemoteObject;
public class RemoteSMS{
private var bridge:RemoteObject;
//singleton
private static var instance:RemoteSMS;
public static function getInstance():RemoteSMS{
if(instance == null){
instance = new RemoteSMS();
}
return instance;
}
//Funcao chamada em caso de falha no remote
private function defaultFaultHandler(e:FaultEvent):void{
Alert.show(e.fault.faultDetail, e.fault.faultString);
}
public function Logar(ClassName:String, dadosVO:UserVO,
result:Function):void
{
bridge.source = 'sms.' + ClassName;
var async:AsyncToken = bridge.Login(dadosVO);
async.addResponder(new Responder(result,
defaultFaultHandler));
}
public function RemoteSMS()
{
bridge = new RemoteObject();
bridge.showBusyCursor = true;
bridge.destination = 'amfphp';
}
}
}
//component de login
<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
width="268" height="184" title="Digite seu login e Senha">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import br.com.sajsoft.sms.vo.UserVO;
import br.com.sajsoft.sms.remote.RemoteSMS;
import mx.rpc.remoting.mxml.RemoteObject;
import mx.controls.Alert;
private var remote:RemoteSMS = RemoteSMS.getInstance();
//Funcao de autenticacao
private function Autenticar():void{
if(txtLogin.text != "" && txtSenha.text != ""){
var loginVO:UserVO = new UserVO();
loginVO.login = txtLogin.text;
loginVO.senha = txtSenha.text;
remote.Logar('ClassUsuario', loginVO,
AutenticarResult);
}else{
MessageLoginError.text = "Por favor,
preencha todos os
campos!!!";
}
}
private function AutenticarResult(e:ResultEvent):void{
if(e.result.logado == "YES"){
Alert.show("UHUHUHUHU, estamos logado "
+
e.result.logado,"Mensagem:");
}else{
MessageLoginError.text = e.result.erro;
txtLogin.text = "";
txtSenha.text = "";
}
}
]]>
</mx:Script>
<mx:Label x="10" y="10" fontFamily="Verdana" fontSize="10"
fontStyle="normal" fontWeight="bold" textAlign="left" width="222"
color="#F81207" id="MessageLoginError"/>
<mx:Label x="10" y="38" text="Login"/>
<mx:Label x="10" y="80" text="Senha"/>
<mx:TextInput x="72" y="36" id="txtLogin"/>
<mx:TextInput x="72" y="78" id="txtSenha" displayAsPassword="true"/>
<mx:Button x="160" y="108" label="Acessar" id="btnLogin"
click="Autenticar()"/>
</mx:Panel>
//main
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
width="1098" height="746" horizontalAlign="center"
xmlns:comp="br.com.sajsoft.sms.component.*">
<mx:Script>
<![CDATA[
import br.com.sajsoft.sms.vo.UserVO;
]]>
</mx:Script>
<comp:LoginPanel x="675" y="300">
</comp:LoginPanel>
</mx:Application>
//back-end
<?php
include_once 'br/com/sajsoft/sms/vo/UserVO.php';
include_once 'classes/caiubiphp/modelflex.php';
class ClassUsuario
{
public function Login(UserVO $dadosVO){
$aut = new Model('usuario');
$aut->find(array('*'),"login = '$dadosVO->login' and senha =
'$dadosVO->senha'");
$resultado['logado'] = null;
$resultado['erro'] = null;
if ($aut->result()){
$resultado['logado'] = "YES";
//Cria sessao
$_SESSION['coduser'] = $user->coduser;
return $resultado;
}else{
$resultado['erro'] = "Usuário ou Senha Inválido";
$resultado['logado'] = "NO";
return $resultado ;
}
}
}
-------------
Desculpem o memorando e please help me!!!
--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---