Retorno de dados ZendAmf - Ajuda

3 views
Skip to first unread message

Luiz Barros

unread,
Nov 24, 2009, 4:24:23 PM11/24/09
to flexdev
Amigos sou usuário novato, em Flex
Estou seguindo alguns tutoriais que encontrei em algums blogs sobre
Flex

Estou usando o PHP com o ZENDAMF para interagir com banco de dados
Segui este tutorial
http://www.leonardofranca.com.br/index.php/2009/04/24/adobe-flex-com-php-usando-zendamf-primeiros-passos/comment-page-1/

Consegui com sucesso implementar corretamente.

Agora estou com dúvidas
Se ao invez de retornar os dados em um datagrig
Eu quiser retornar preenchendo campos input text

com o public function getData()
$this->dados[] = $contatosVO;
}
return($this->dados);

Eu estou retornando dados de um objeto tipado, correto ?
Como posso entao preencher em um form campos
nome, e-mail , id com estes dados ?

Alguem pode me orientar ?

José Carlos Silveira Fiel

unread,
Nov 24, 2009, 4:53:27 PM11/24/09
to fle...@googlegroups.com
Olá Luiz, seja bem vindo ao mundo do Flex.

Como você pode ter visto nos exemplos, o retorno dos dados no Flex usando Remote Object, você terá sempre uma função de Result ou de Fault.

Então na função de result de sua chamada remote, popule o seu objeto VO e logo você pode usá-lo diretamente em seus campos de TextInput usando databinding.

Vejamos:

[Bindable]
private contatosVO:ContatosVO = new ContatosVO();

private function resultadoChamada(event:ResultEvent):void{
        contatosVO = ContatosVO(event.result);
}

<mx:TextInput id="txtNome" text="{ contatosVO.nome }" />
<mx:TextInput id="txtEmail" text="{ contatosVO.email }" />

Bom creio que você já deve ter a classe ContatosVO no Flex também... então vc cria uma instancia local que seja Bindable e logo atribui o resultado a ela, fazendo um Casting de ContatosVO. Logo após você seta as propriedades text de seu TextInput usando a instancia de contatosVO e dizendo qual propriedade que deseja usar.

Espero que soube explicar o que vc desejava fazer, caso tiver mais alguma dúvida é só perguntar.

Abraços.

--
Att.,
José Carlos Silveira Fiel
Flex and PHP Developer
Adobe Certified Expert Flex with AIR
Blog: http://blog.josecarlosfiel.com.br/
Twitter: http://twitter.com/josecarlosfiel


2009/11/24 Luiz Barros <sailor...@yahoo.com.br>

Ricardo

unread,
Nov 24, 2009, 7:29:55 PM11/24/09
to fle...@googlegroups.com
Alguém sabe como que faz
para retirar aquela marcação nas palavras.

Algum atalho, ou sei lah.

Fiz um upload para entender melhor,
http://img412.imageshack.us/i/flashbuildesourceselect.jpg/

Tentei procurar em Windows/Preferences/Editors..
mas não consegui


Pergentino Araújo

unread,
Nov 25, 2009, 6:33:55 AM11/25/09
to fle...@googlegroups.com
Nos botões na barra de ferramentas tem um botão chamado "Mark Occurrences" (ele é parecido com um marca-texto.

[]'s

--
Atenciosamente, Pergentino Araújo.
Arquiteto Java/Flex
MSc. Profissional - Engenharia de Software
Adobe Certified Expert - Flex 3 with AIR

2009/11/24 Ricardo <r1.ca...@gmail.com>

Luiz Barros

unread,
Nov 25, 2009, 8:24:49 AM11/25/09
to flexdev
Olá José.

Entendi a sua explicação.

Consegui até
private function resultadoChamada(event:ResultEvent):void{
contatosVO = ContatosVO(event.result);
}

Ele preenche contatosVO como Array
[0]
nome=Luiz
email=ya...@yahoo.com.br

Mas não estou conseguindo é exibir no campo.

Eu tenho
<mx:TextInput id="txtNome" />

Minha funcao de retorno está
public function onResultCPFdata(re:ResultEvent):void {
var estadosVO:EstadosVO = new EstadosVO();
estadosVO=EstadosVO(re.result);

Alert.show(estadosVO.nome);
txtNome.text=estadosVO.nome as String;
}
Já acusa erro no Alert.show

Minha classe definada está

public class EstadosVO
{
public var id:uint;
public var nome:String;
public var tipo:String;
public var cgccpf:String;
public var endereco:String;
public var bairro:String;
public var cidade:String;
public var cep:String;
public var email:String;
public var estado:String;
public var nossonumero:String;
public var produto:String;
public var urlexterna:String;

public function EstadosVO()
{
}

}

José Carlos Silveira Fiel

unread,
Nov 25, 2009, 9:33:19 AM11/25/09
to fle...@googlegroups.com
Certo,
Me diga qual erro vc está tendo ali no Alert.


--
Att.,
José Carlos Silveira Fiel
Flex and PHP Developer
Adobe Certified Expert Flex with AIR
Blog: http://blog.josecarlosfiel.com.br/
Twitter: http://twitter.com/josecarlosfiel


2009/11/25 Luiz Barros <sailor...@yahoo.com.br>

Luiz Barros

unread,
Nov 25, 2009, 3:29:29 PM11/25/09
to flexdev
TypeError: Error #1034: Falha de coerção de tipo: não é possível
converter []@75289e1 em br.com.leonardofranca.vo.EstadosVO.
at b/onResultCPFdata()[S:\hospitaldacrianca\flex\src\b.mxml:111]
at b/___b_Operation2_result()[S:\hospitaldacrianca\flex\src\b.mxml:
183]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.rpc::AbstractOperation/http://www.adobe.com/2006/flex/mx/
internal::dispatchRpcEvent()[C:\autobuild\3.2.0\frameworks\projects\rpc
\src\mx\rpc\AbstractOperation.as:198]
at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/
internal::resultHandler()[C:\autobuild\3.2.0\frameworks\projects\rpc
\src\mx\rpc\AbstractInvoker.as:193]
at mx.rpc::Responder/result()[C:\autobuild\3.2.0\frameworks\projects
\rpc\src\mx\rpc\Responder.as:43]
at mx.rpc::AsyncRequest/acknowledge()[C:\autobuild\3.2.0\frameworks
\projects\rpc\src\mx\rpc\AsyncRequest.as:74]
at NetConnectionMessageResponder/resultHandler()[C:\autobuild
\3.2.0\frameworks\projects\rpc\src\mx\messaging\channels
\NetConnectionChannel.as:515]
at mx.messaging::MessageResponder/result()[C:\autobuild
\3.2.0\frameworks\projects\rpc\src\mx\messaging\MessageResponder.as:
199]


José Carlos Silveira Fiel

unread,
Nov 25, 2009, 5:02:44 PM11/25/09
to fle...@googlegroups.com
Então Luiz,
Pelo que estou vendo você deve estar retornando um Array lá no PHP. No caso você deveria retornar um objeto EstadoVO lá no PHP e isso resolverá seu problema.


--
Att.,
José Carlos Silveira Fiel
Flex and PHP Developer
Adobe Certified Expert Flex with AIR
Blog: http://blog.josecarlosfiel.com.br/
Twitter: http://twitter.com/josecarlosfiel


2009/11/25 Luiz Barros <sailor...@yahoo.com.br>

Michael Antunes

unread,
Nov 25, 2009, 5:32:14 PM11/25/09
to fle...@googlegroups.com
Valeu Zé!

[ ] ´ Michael

On Ter 24/11/09 22:29 , Ricardo r1.ca...@gmail.com sent:

Alguém sabe como que faz
para retirar aquela marcação nas palavras.

Algum atalho, ou sei lah.

Fiz um upload para entender melhor,
http://img412.imageshack.us/i/flashbuildesourceselect.jpg/

Tentei procurar em Windows/Preferences/Editors..
mas não consegui





E-mail verificado pelo Terra Anti-Spam.
Para classificar esta mensagem como spam ou não spam, visite
http://ecp.terra.com.br/cgi-bin/reportspam.cgi?+_d=SCY3MTcxMzA0I3Blcm0hdGVycmEmMSwxMjU5MTA5MDE4LjgyNDE0OC4yOTIwMS5jb3Ntb2xlZG8uaHN0LnRlcnJhLmNvbS5iciw2NTU5TerraMail
Verifique periodicamente a pasta Spam para garantir que apenas mensagens
indesejadas sejam classificadas como Spam.

Esta mensagem foi verificada pelo E-mail Protegido Terra.
Atualizado em 24/11/2009


Michael Antunes

unread,
Nov 25, 2009, 5:33:18 PM11/25/09
to fle...@googlegroups.com
opa, errei o e-mail. desculpa ai pessoal!

[ ] ´ Michael

On Qua 25/11/09 20:32 , Michael Antunes michael...@terra.com.br sent:

E-mail verificado pelo Terra Anti-Spam.

Para classificar esta mensagem como spam ou não spam, clique aqui.


Verifique periodicamente a pasta Spam para garantir que apenas mensagens
indesejadas sejam classificadas como Spam.

Esta mensagem foi verificada pelo E-mail Protegido Terra.

Atualizado em 25/11/2009


Eduardo Kraus

unread,
Nov 25, 2009, 7:29:56 PM11/25/09
to flexdev
Desmarca, conforme imagem em anexo

Curso Adobe Flex focado em PHP – turma 01 http://www.adobeflex.com.br/cursos/adobe-flex-focado-em-php-turma-01

Eduardo Kraus

Desenvolvedor
eduard...@gmail.com
blog.mxml.com.br
www.twitter.com/EduardoKraus

ADOTE ESTA CAMPANHA:

1. Apague o meu e-mail e o meu nome.
2. Apague também os endereços dos amigos antes de reenviar.
3. Encaminhe como cópia oculta (Cco ou Bcc) aos SEUS destinatários.
Agindo sempre assim dificultaremos a disseminação de vírus, spams e banners.



2009/11/24 Ricardo <r1.ca...@gmail.com>
Untitled-1.png

Luiz Barros

unread,
Nov 26, 2009, 6:36:13 AM11/26/09
to flexdev
Sim um array do objeto EstadoVO

if ($this->num>0)
{
while ($this->row = mysql_fetch_assoc($this->query))
{
$estadosVO = new EstadosVO();
$estadosVO->setNome($this->row['nomesac']);
$estadosVO->setTipo($this->row['tiposac']);
$estadosVO->setCgccpf($this->row['cgccpfsac']);
$estadosVO->setEndereco($this->row['endsac']);
$estadosVO->setCidade($this->row['cidadesac']);
$estadosVO->setEstado($this->row['estadosac']);
$estadosVO->setEmail($this->row['emailsac']);
$estadosVO->setId($this->row['Id']);
$this->dados[] = $estadosVO;
}
//$urlF= ;
//return $urlF;
return($this->dados);
}
else
{
return false;
}

José Carlos Silveira Fiel

unread,
Nov 26, 2009, 6:53:25 AM11/26/09
to fle...@googlegroups.com
Certo.

Então verifique em seu Flex Debugger como está sendo retornado o resultado no Flex, que é óbvio é como vc disse um Array possuindo objetos EstadoVO.

Faça assim:

public function onResultCPFdata(re:ResultEvent):void   {
    var estadosVO:EstadosVO = new EstadosVO();
    if(re.result){
            arrResult = re.result as Array;
            txt.nome = arrResult[0].estadoVO.nome; //veja tb se não está retornando assim... arrResult[0].nome
    }

Qualquer coisa só falar.


   


--
Att.,
José Carlos Silveira Fiel
Flex and PHP Developer
Adobe Certified Expert Flex with AIR
Blog: http://blog.josecarlosfiel.com.br/
Twitter: http://twitter.com/josecarlosfiel


2009/11/26 Luiz Barros <sailor...@yahoo.com.br>

Luiz Barros

unread,
Nov 26, 2009, 8:31:24 AM11/26/09
to flexdev
ok.
agora Funcionou certinho.
Obrigado pela sua ajuda.

Para referencia funcionou com
arrResult[0].nome

Reply all
Reply to author
Forward
0 new messages