Nesta 3a parte do tutorial iremos exibir os dados que estão sendo gravados no formulário para inserir pessoas.
Outras partes do tutorial:
- Parte 1 – Preparando o ambiente, criando os projetos Flex e PHP, testando a conexão
- Parte 2 – Inserindo dados com ZendAmf e Flex
Agora vamos exibir os dados que foram adicionados na parte 2. Precisamos criar um dataGrid com as colunas nome e email, e fazer a comunicação com o PHP para obter os dados. O Datagrid é feito através do seguinte código:
<mx:DataGrid id="dg" width="400" height="200" top="50" left="10"> <mx:columns> <mx:DataGridColumn dataField="id" visible="false"/> <mx:DataGridColumn dataField="nome" headerText="Nome"/> <mx:DataGridColumn dataField="email" headerText="Email"/> </mx:columns> <mx:creationComplete> <![CDATA[ GetAll(); ]]> </mx:creationComplete> </mx:DataGrid>
Veja que chamamos o método GetAll no CreationComplete do DataGrid. Este método está descrito a seguir:
<fx:Declarations>
<mx:RemoteObject id="RemotePessoas"
destination="zend"
source="Pessoas">
<mx:method name="TesteConexao"
result="OnTestConexaoOk(event)"/>
<mx:method name="GetAll"
result="OnGetAll(event)"/>
</mx:RemoteObject>
</fx:Declarations>
<fx:Script>
<![CDATA[
import forms.PessoaForm;
import mx.controls.Alert;
import mx.managers.PopUpManager;
import mx.rpc.events.ResultEvent;
public function OnTestConexaoOk(event:ResultEvent):void
{
Alert.show(event.result.toString());
}
public function GetAll():void
{
RemotePessoas.GetAll();
}
protected function OnGetAll(event:ResultEvent):void
{
dg.dataProvider = event.result;
}
]]>
</fx:Script>
O método GetAll() irá chamar o método GetAll() do php, que está descrito a seguir:
<?php
include("base.php");
class Pessoas extends Base
{
function __construct()
{
parent::__construct();
}
function TesteConexao()
{
return "OK";
}
function Inserir($nome,$email)
{
$data = array('nome'=>$nome,'email'=>$email);
$this->db->insert('pessoas',$data);
return $this->db->lastInsertId();
}
function GetAll()
{
return $this->db->fetchAll("select * from pessoas");
}
}
O método GetAll() do PHP usa a instância de db para realizar um select, através do método fetchAll. O resultado de fetchAll é retornado pelo php e o método OnGetAll no flex é executado, onde setamos o dataprovider do DataGrid. Para finalizar, precisamos criar um botão que irá atualizar o dataGrid. Isso é facilmente feito pelo código a seguir:
<s:Button label="Atualizar" top="10" left="150"> <s:click> <![CDATA[ GetAll(); ]]> </s:click> </s:Button>
Pingback: CRUD com Flex e Zend_AMF – Parte 2 | flex.etc.br – Livros, tutoriais, exemplos sobre Adobe Flex
Olá Daniel, bem interessante o teu tutorial, parabéns.
Talvez não seria interessante utilizar o framework da Zend de uma forma mais ampla, trabalhano com o Zend_Application e o application.ini para otimizar o desenvolvimento ?
Grande abraço.
Ola, sim!!! Eu vou comentar isso mais no final, mas por enquanto é o mais fácil possível para o pessoal entender
Daniel
É possivel retornar o resultado na forma de array collection, para incluir em um data list, ao invés de um data grid?
E no caso de sim, você pode me dar uma mão quanto a isso?
Olá é sim, entre em contato comigo por email para vermos o código ok? suporte@flex.etc.br
Bom dia, Daniel
Enviei um email explicando o caso com o fxp em anexo, agradeço se puder me dar uma luz. Abraços
Como faço para quando já incluir ele atualizar o datagrid?
Olá, no Result do incluir você deve chamar o GetAll !
Cara você é demais, sei que no sei livro vamos ter isso e muito mais, parabéns.
So uma pergunta qual a diferença de performance e segurança entre o AMFZEND e o AMFPHP ?
amfphp é mais rápido que zend_amf
mas a diferença é vista quando trazemos uns 1000 itens na tela… e sinceramente ninguém faz isso…. Tem paginação claro…
Quanto a segurança, nao sei bem em que você está pensando, você diz interceptação de dados?
Cara sou muito agradecido a você por esses post’s fantásticos. Ainda que alguém diga “poderia ser melhor”, “poderia ter usado isso ou aquilo”. Mas o importante foi que você explicou com clareza e simplicidade. Parabéns!