Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Posso passar parâmetro para o TSeekButton? A pergunta parece ser boba... tem como enviar um parâmetro para o TSeekButton? A resposta seria..claro! basta no construtor da classe inserir um parâmetro e do formulário que deseja chamar passa este parâmetro.... correto? Eis o que acontece... Código do TSeekButton: public function __construct($info) //varíavel que coloquei para receber o parâmetro { parent::__constr...
CG
Posso passar parâmetro para o TSeekButton?  
A pergunta parece ser boba... tem como enviar um parâmetro para o TSeekButton?
A resposta seria..claro! basta no construtor da classe inserir um parâmetro e do formulário que deseja chamar passa este parâmetro.... correto?
Eis o que acontece...

Código do TSeekButton:
public function __construct($info) //varíavel que coloquei para receber o parâmetro
{
parent::__construct();
parent::setTitle( AdiantiCoreTranslator::translate('Search record') );
parent::setSize(0.7, 750);

Código do Formulário que está chamando o TSeekButton:
$teste = new TSeekButton('teste');
$obj = new AdminSeek('oi'); // parâmetro que estou passando para o construtor do AdminSeek
$action = new TAction(array($obj, 'onReload'));
$teste->setAction($action);

Mensagem de erro que aparece quando clico no TSeekButton (ele não abre o TSeekButton, mas a palavra "OI" aparece no TOPO do formulário de onde eu cliquei e com a mensagem abaixo):

Warning: Missing argument 1 for AdminSeek::__construct(), called in E:wampwwwtestelibadiantiwidgetformTSeekButton.php on line 162 and defined in E:wampwwwtesteappcontrolAdminSeek.class.php on line 19

Alguém sabe como enviar um parâmetro para o construtor do TSeekButton?
Agradeço a atenção!

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (5)


NR

Passe-o como parâmetro da TAction:
  1. <?php
  2. $obj = new AdminSeek();
  3. $action = new TAction(array($obj'onReload')); 
  4. $action->setParameter('seu_param','oi');
  5. ?>
CG

Obrigado pela resposta, mas o mesmo erro acontece.
Aqui está o meu construtor do SEEK:
  1. <?php
  2.    private $info;
  3.     
  4.      public function __construct($info)
  5.     {
  6.         $this->info $info;
  7.        echo $info;
  8.    }
  9. ?>


Fazendo como você disse:

  1. <?php
  2.     $obj = new AdminSeek();
  3.     $action = new TAction(array($obj'onReload')); 
  4.     $action->setParameter('seu_param','oi');
  5.     ?>


Se entendi certo onde 'seu_param' seria o nome da variável que está no construtor?
De qualquer forma o erro persiste, para resolver estou colocando na Sessão o formulário que estou para determinar a minha ação.. mas vou precisar enviar parâmetros pro seek.. eu fiz da maneira certa?
Obrigado!


NR

Carlos, não sei exatamente o que você quer fazer com esses parâmetros, mas se for usá-los no construtor, precisa passar o parâmetro com um valor default, pois o construtor é executado anteriormente pelo Adianti antes de qualquer interação do usuário:
  1. <?php
  2. public function __construct($info=null)
  3. {
  4. }
  5. ?>

Se não precisar utilizar no construtor é mais simples, pois a função onReload por exemplo, já está preparada para receber os parâmetros via $param:
  1. <?php
  2. function onReload($param NULL)
  3. ?>

$param é um array associativo, então para acessar os parâmetros que você criou:
  1. <?php
  2. echo $param['seu_param'];
  3. ?>
CG

Ok! eu entendi como enviar um parâmetro para o método onReload do Seek, mas não entendi como enviar pro método construtor do Seek!
Uma outra coisa que percebi foi o seguinte... já que pra passar os parâmetros o método onReload tem que ser estático... eu não consigo enviar os parâmetros para uma variável global da classe.. o que eu precisaria fazer na verdade. Por isso a insistência no construtor.. então vai de novo a pergunta: como eu envio valores para o método construtor do Seek?

  1. <?php
  2. private $variavel;
  3.     
  4. function __construct($info null)
  5.     {
  6.         parent::__construct();
  7.        $this->variavel $info;
  8. ?>


como faço no formulário que está chamando o Seek enviar o parâmetro pro construtor?
Como disse antes.. entendi que pra enviar pro onReload tem que usar o setParameter e a classe tem que ser estática.. mas e o construtor?
Preciso acessar esses valores dentro do Seek, e com o método estático do onReload fica difícil enviar pras variáveis os valores passados por parâmetros.

Obrigado novamente!
NR

Carlos, a ideia é a que postei no outro comentário. Prepare o construtor para receber uma variável e teste se há conteúdo nessa variável. Mas é preciso replicar esses parâmetros para todas ações da seek:
  1. <?php
  2. // formulario
  3. $action->setParameter('seu_param','Testando parâmetro');
  4. // seek
  5. private $variavel;
  6. function __construct($param null)
  7. {
  8.       if (isset($param['seu_param']))
  9.            $this->variavel $param['seu_param'];
  10.      // acao do botao de busca(onSearch)  
  11.      $this->form->addQuickAction('Find'$search = new TAction(array($this'onSearch')), 'ico_find.png');
  12.      $search->setParameter('seu_param',$this->variavel); // importante, senao apos clicar no botao o parametro vai sumir
  13.      // acao de selecionar registro na grid da seek
  14.      $this->datagrid->addQuickAction('Select'$select = new TDataGridAction(array($this'onSelect')), 'id''ico_apply.png');
  15.      $select->setParameter('seu_param',$this->variavel);
  16. }
  17. ?>

Um detalhe é que se precisar do valor dessa variável em uma função static, você pode capturá-lo através do parâmetro da função:
  1. <?php
  2. public static function onSelect($param)
  3. {
  4.     var_dump($param['seu_param']);
  5. }
  6. ?>