SR
Erro TDBUniqueSearch ao atualizar um formulário usando TForm::se
Abaixo a resolução de um problema que encontrei no TDBUniqueSearch.
Tenho uma funcionalidade que busca cidade e estado de acordo com o CEP.
O campo cidade eu utilizo o TDBUniqueSearch, quando eu executo TForm::sendData,
a cidade não era preenchida corretamente.
Analisando a requisição eu encontrei o Método AdiantiMultiSearchService::onSearch, ele é responsável
por adicionar o filtro. Mas o estranho é que o filtro não é adicionado.
A solução para o problema foi customizar o método e adicionar o filtro.
Declaração do TDBUniqueSearch
Customização linha 95 do arquivo AdiantiMultiSearchService.
Tenho uma funcionalidade que busca cidade e estado de acordo com o CEP.
O campo cidade eu utilizo o TDBUniqueSearch, quando eu executo TForm::sendData,
a cidade não era preenchida corretamente.
Analisando a requisição eu encontrei o Método AdiantiMultiSearchService::onSearch, ele é responsável
por adicionar o filtro. Mas o estranho é que o filtro não é adicionado.
A solução para o problema foi customizar o método e adicionar o filtro.
Declaração do TDBUniqueSearch
$cidade = new TDBUniqueSearch('cidade', 'database', 'Cidade', 'nome', 'nome', NULL);
Customização linha 95 do arquivo AdiantiMultiSearchService.
if (!$dynamic_criteria->isEmpty())
{
$criteria->add($dynamic_criteria, TExpression::AND_OPERATOR);
}else {
// Adicionando filtro
foreach ($columns as $column)
{
if (stristr(strtolower($operator),'like') !== FALSE)
{
$param['value'] = str_replace(' ', '%', $param['value']);
$filter = new TFilter($column, $operator, "%{$param['value']}%");
}
else
{
$filter = new TFilter($column, $operator, $param['value']);
}
$criteria->add($filter, TExpression::OR_OPERATOR);
}
}