Usar criteria no TDBUniqueSearch Olá pessoal, como vão? Preciso de uma ajuda para colocar um filtro no TDBUniqueSearch A regra é não trazer a mesma empresa que estou editando. Abaixo segue parte do código que utilizo em um form com cortina lateral. Só coloquei o trecho que estou com a duvida. ...
AW
Usar criteria no TDBUniqueSearch  
Olá pessoal, como vão?
Preciso de uma ajuda para colocar um filtro no TDBUniqueSearch
A regra é não trazer a mesma empresa que estou editando.

Abaixo segue parte do código que utilizo em um form com cortina lateral.
Só coloquei o trecho que estou com a duvida.
 
  1. <?php
  2. $filtro_contratada = TSession::getValue('criteria_contratada');
  3. $repo = new TRepository('Empresa');
  4. $criteria_contratada = new TCriteria();
  5. $criteria_contratada->add(new TFilter('id', '<>', $filtro_contratada));
  6. $contratada_id = new TDBUniqueSearch('contratada_id[]', 'sgdt', 'Empresa', 'id', 'cnpj', null, $criteria_contratada);
  7. ....
  8. ....
  9. ....
  10. ?>


minha duvida é quanto ao recebimento do parâmetro ID da empresa pois, quando clico em editar através da listagem para carregar as informações na cortina lateral eu não consigo pegar esse parâmetro para colocar no filtro, pois esse ID (empresa) não pode ser apresentado na pesquisa que o usuário faz no TDBUniqueSearch.

Eu tenho que carregar esse critério quando carrego os dados através do método onEdit?
Se sim, tem um exemplo?

Tentei com TSession porem para alterar o ID eu tenho que clicar 2X em editar para mudar esse ID na sessão no form da cortina lateral.

Segue parte do código dentro do método onEdit
 
  1. <?php
  2. $contratadas = Contratada::where('contratante_id', '=', $empresa->id)->load();
  3. TSession::setValue('criteria_contratada', $param['key']);
  4. if ($contratadas){
  5. $this->contratadas->addHeader();
  6. foreach ($contratadas as $contratada){
  7. $objeto_contratada = new stdClass;
  8. $objeto_contratada->contratada_id = $contratada->contratada_id; // campo TDBUniqueSearch
  9. $this->contratadas->addDetail($objeto_contratada);
  10. }
  11. $this->contratadas->addCloneAction();
  12. }else{
  13. //$this->onClear($param);
  14. $this->contratadas->addHeader();
  15. $this->contratadas->addDetail( new stdClass );
  16. $this->contratadas->addCloneAction();
  17. }
  18. ?>


Obrigado

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (2)


NR

Você pode criar a variável da criteria com escopo de classe e adicionar as restrições na onEdit:
 
  1. <?php
  2. // construct
  3. $this->criteria = new TCriteria();
  4. $contratada_id = new TDBUniqueSearch('contratada_id[]', 'sgdt', 'Empresa', 'id', 'cnpj', null, $this->criteria);
  5. // onEdit
  6. $this->criteria->add(new TFilter(....));
  7. ?>
AW

Nataniel obrigado.

Funcionou certinho.