PD
7 dúvidas comuns ao utilizar o Adianti Framework
Fechado
Neste artigo vou tentar responder algumas das dúvidas mais comuns sobre o uso do Adianti Framework.
1) Como conecto no banco de dados ***SQL?
O Adianti framework atualmente suporta cinco tipos de bancos de dados de maneira nativa: PostgreSQL, MySQL, Sqlite, SqlServer e Oracle. Novos bancos serão adicionados em novas versões, o que depende de uma homologação e testes. Mas se você quiser adicionar um suporte a outro banco de dados é possível. Como o framework usa a biblioteca PDO do PHP para realizar as conexão com a base de dados, esta tarefa não é tão complexa.
Inicialmente você precisará alterar o método Open da classe TConnection (lib/adianti/database/TConnection.class.php), e acrecentar dentro do switch/case, o banco de dados apropriado e instanciar o objeto PDO.
Além de implementar a criação do objeto PDO, o próximo passo é verificar como os Selects neste banco de dados são tratados. Como o framework usa paginação, o tratamento dado à cláusulas como LIMIT e OFFSET nos bancos livres (PostgreSQL, MySQL, Sqlite) e dos proprietários (Oracle, SqlServer) é diferente. Assim, a classe TSqlSelect (lib/adianti/database/TSqlSelect.class.php) possui um tratamento específico para alguns bancos como Oracle e SqlServer. Veja o método getInstruction().
Por fim, caso você tenha implementado o suporte à um driver banco de dados novo e ele tenha passado com sucesso nos testes de inserção, exclusão, ateração e listagem com paginação, nos envie!
2) Como colocar outros componentes em um Designer ?
A ferramenta Adianti Studio Designer facilita em muito o trabalho de criação de interfaces para o framework, permitindo criarmos interfaces com notebooks, formulários, datagrids, e outros. Entretanto alguns componentes ainda não estão disponíveis no Designer, mas isso não impede o seu uso. Você pode adicionar objetos como THtmlEditor e TMultifield em tempo de execução à uma interface criada pelo Adianti Studio Designer, veja como.
Em primeiro lugar, é preciso acrescentar o objeto visualmente ao formulário desenhado. Como todo TUIBuilder é também filho de TPanel, podemos instanciar o objeto desejado e em seguida usar o método put() para adicioná-lo à tela. Tendo em mãos o objeto instanciado, basta adicioná-lo ao formulário desenhado da mesma forma que colocamos objetos em um painel qualquer.
1) Como conecto no banco de dados ***SQL?
O Adianti framework atualmente suporta cinco tipos de bancos de dados de maneira nativa: PostgreSQL, MySQL, Sqlite, SqlServer e Oracle. Novos bancos serão adicionados em novas versões, o que depende de uma homologação e testes. Mas se você quiser adicionar um suporte a outro banco de dados é possível. Como o framework usa a biblioteca PDO do PHP para realizar as conexão com a base de dados, esta tarefa não é tão complexa.
Inicialmente você precisará alterar o método Open da classe TConnection (lib/adianti/database/TConnection.class.php), e acrecentar dentro do switch/case, o banco de dados apropriado e instanciar o objeto PDO.
Além de implementar a criação do objeto PDO, o próximo passo é verificar como os Selects neste banco de dados são tratados. Como o framework usa paginação, o tratamento dado à cláusulas como LIMIT e OFFSET nos bancos livres (PostgreSQL, MySQL, Sqlite) e dos proprietários (Oracle, SqlServer) é diferente. Assim, a classe TSqlSelect (lib/adianti/database/TSqlSelect.class.php) possui um tratamento específico para alguns bancos como Oracle e SqlServer. Veja o método getInstruction().
Por fim, caso você tenha implementado o suporte à um driver banco de dados novo e ele tenha passado com sucesso nos testes de inserção, exclusão, ateração e listagem com paginação, nos envie!
2) Como colocar outros componentes em um Designer ?
A ferramenta Adianti Studio Designer facilita em muito o trabalho de criação de interfaces para o framework, permitindo criarmos interfaces com notebooks, formulários, datagrids, e outros. Entretanto alguns componentes ainda não estão disponíveis no Designer, mas isso não impede o seu uso. Você pode adicionar objetos como THtmlEditor e TMultifield em tempo de execução à uma interface criada pelo Adianti Studio Designer, veja como.
Em primeiro lugar, é preciso acrescentar o objeto visualmente ao formulário desenhado. Como todo TUIBuilder é também filho de TPanel, podemos instanciar o objeto desejado e em seguida usar o método put() para adicioná-lo à tela. Tendo em mãos o objeto instanciado, basta adicioná-lo ao formulário desenhado da mesma forma que colocamos objetos em um painel qualquer.
<?php$html = new THtmlEditor('html');$ui = new TUIBuilder(500,300);$ui->put($html, 40,40); // coluna e linha?>
Em segundo lugar, desejamos que o objeto em questão seja postado pelo formulário. Então é necessário que o formulário tenha conhecimento sobre este objeto, para gerenciá-lo. Assim, você terá de adicionar o campo ao setFields(), caso contrário, ele não será postado junto com os dados do formulário. Lembrando que o setFields() indica quais objetos serão postados com o formulário:
<?php$fields = $ui->getFields();$fields[] = $html;$this->form->setFields($fields);?>
3) Como alterar o visual dos componentes?
Os estilos CSS dos componentes ficam localizados na pasta lib/adianti/include/nome-do-componente. É recomandado utilizar ao máximo as características originais do framework para não ter problemas de compatibilidade em mudanças de versão. Mas você é livre para alterar estes arquivos. Lembre-se que em futuras atualizações do framework, toda a pasta lib/adianti será substituída pela nova versão e você terá de compatibilizar as mudanças manualmente.
Além disso, alguns componentes como TTable, TTableRow, e TTableCell são filhos de TElement, mas o que isso significa? TElement é a classe-base para criação de objetos HTML. Na prática, você pode alterar atributos HTML destes objetos de maneira direta, como no exemplo a seguir.
Neste exemplo, acrescentamos uma linha ($row), e dentro da linha uma nova célula ($cell). Em seguida, alteramos o atributo colspan da célula, para fazer com que ela ocupe 3 colunas.
<?php $row=$table1->addRow(); $row->addCell(new TLabel(_t('Code'))); $cell=$row->addCell(578); $cell->colspan=3;?>
Nesse exemplo, alteramos o colspan, mas poderia ser o atributo "style".
4) Como programar eventos javascript sobre os componentes do framework?
Em alguns casos, é necessário acrescentar um comportamento não previsto à um componente do framework. A partir da versão 1.0.1, é possível usar o método setExitAction() para anexar eventos de saída em campos. Neste exemplo iremos acrescentar um evento onBlur à um TEntry.
Os objetos de formulário (TEntry, TText, TDate, etc) são filhos de TField, e permitem alterar características de exibição por meio do método setProperty(). Na prática, este método permite definir atributos que o objeto terá quando for gerado o HTML para sua apresentação, como no exemplo a seguir:
<?php $field1 = new TEntry('field1'); $field1->setProperty('onBlur', 'alert(123)');?>
Olá,
Como é feita a conexão com o Banco de dados MySql?
www.adianti.com.br/doc-framework-Persistence-Setup-SetupConnection
Como eu consigo o html de uma TTable que eu montei, por exemplo eu preciso pegar o script html
"<table>
<tr>
<td>abc<td>
</tr>......"
</td></td></table>
Luy,
Favor abrir sempre outro tópico no fórum quando a dúvida não tiver relação com o post:
->getContents()
Olá a todos,
Ainda estou me familiarizando com a ferramenta, mas estou gostando muito. Venho do scriptcase, mas acho ela muito limitada mas não foi por esse motivo que posto a minha primeira mensagem, A ferramenta é constituída de uma estrutura de diretórios, cada um com sua função... eu possuo um arquivo contendo algumas funções (em PHP) que me são bastante úteis, então gostaria de saber em qual diretório seria o correto colocar o arquivo ? Seria em app/lib/include ? Porq que acho que o diretório /lib não deve ser muito legal de colocar arquivos (caso saia alguma atualização. Estou certo ou escrevendo besteira ?
Carlos,
Por favor, crie um POST específico para usa dúvida.
Este artigo já tem bastante tempo, é de 2013.
Att,
Boa Tarde Pablo,
Estou tendo problema, para conectar ao Banco Firebird, já fiz a alteração que foi informado por você acima no arquivo TConnection.class.php:
case 'ibase':
$name = isset($host) ? "{$host}:{$name}" : $name;
$conn = new PDO("firebird:dbname={$name}", $user, $pass);
break;
No arquivo ini já fiz a seguinte configuração:
host = "localhost"
port = "3050"
name = "C:CaminhoDoBancoBanco.FDB"
user = "user"
pass = "pass"
type = "ibase"
E no arquivo php.ini já descomentei a seguinte linha:
extension=php_pdo_firebird.dll
E mesmo assim quando tento conectar ao banco ele informa o seguinte erro: could not find driver.
Ficarei muito grato se poderem me ajudar !
Desde já agradeço.